2011-01-29 5 views
5

Если я изучаю разработку python на OSX (Snow Leopard), как лучше всего управлять моими пакетами python?здравый смысл советы по управлению пакетами python на OSX для новичков

Я очень рад большому количеству замечательных пакетов python. Я хотел бы начать их изучать, но управление пакетами меня полностью смутило. Очевидно, я понятия не имею, что я делаю. Я вижу много вопросов о переполнении стека, которые обращаются к управлению пакетами, и люди часто отвечают на них, говоря: «Почему бы вам просто не использовать x? Посмотрите, как легко в этой единственной строке, которую я скопировал из своей оболочки,«

$ x install something 

Какой отличный ответ до х не удается справиться с некоторыми конкретных зависимостей или не может обрабатывать пакет у. Вот что я уже делал:

  1. Я начал просто устанавливать вещи с помощью easy_install.
  2. Вскоре я обнаружил, что в некоторых важных пакетах отсутствовали зависимости (PIL) , поэтому я охотился и обнаружил MacPorts.
  3. Я начал использовать MacPorts, и все мои переменные окружения стали очень запутанными, поэтому я узнал достаточно bash, чтобы перенастроить PATH, PYTHONPATH и sys.path, чтобы заставить все работать (и сделать мое окно терминала приятным). MacPorts показалось великолепным на некоторое время.
  4. Но потом я смутился о том, какую версию различных модулей я использовал, и я нашел больше проблем с зависимостями (GDAL) ...
  5. Затем несколько очень умных людей настоятельно рекомендовали переключиться на Homebrew. Итак, я удалил MacPorts и установил Homebrew.
  6. Теперь, когда у меня есть Homebrew, я не могу ничего установить, потому что я не знаю, как создать Formula для большинства пакетов python, которые я хочу использовать. Если пакет указан в pypi, я не знаю, должен ли я использовать Homebrew, или просто выяснить, как настроить easy_install для установки в каталоги Homebrew. И я до сих пор не знаю, как лучше всего подойти к отсутствующим зависимостям. Может быть, есть какой-то секретный репозиторий из формулы, связанной с питоном? или простой способ преобразования portfiles в формулу?

Я знаю, что правильный ответ может зависеть от того, что я пытаюсь установить.Я пытаюсь установить наборы пакетов, которые позволяют мне:

  1. играть вокруг и автоматизировать все с питоном
    • appscript
    • PIL
    • Pygame
  2. сделать, связанные с ГИС-работы в питоне
    • gdal
    • стройные
    • PostGIS
    • SciPy
  3. исследовать чудные возможности веб-приложений
    • Джанго
    • Google-приложение двигатель

I «Я полностью готов вытереть все с моей машины, которая к настоящему времени должна быть немного загромождена клочками пакетов. Если я должен изучать virtualenv или просто узнать больше об основном процессе проверки зависимостей и их установке самостоятельно, я с удовольствием сделаю это. Если я просто буду копаться в Homebrew, я тоже с удовольствием сделаю это. Как мне решить эти проблемы, которые часто мешают мне делать то, что я действительно хочу сделать (сделать аккуратный материал с помощью python)?

ответ

3

На мой взгляд, лучший способ справиться с питона пакетов должен иметь набор Python установки отдельно от системы Python, по одному для каждой версии вам нужно. Таким образом, я не загрязняю основной питон старыми версиями пакетов, и я могу их удалить и переустановить без каких-либо проблем с моими проектами.

Детали:

На OS X, используя версии MacPorts отлично. То же самое, вероятно, верно для доморощенного, хотя я никогда не использовал его. (В Linux я устанавливаю Python из источника в/opt/pythonxx /, например/opt/python25 /,/opt/python26 /,/opt/python27 и/opt/python31.)

Я тогда никогда устанавливать пакеты в этих питонов, за исключением virtualenv, distribute и pip, которые я установить во всех из них. Когда я хочу, чтобы установить пакет для проекта, я делаю virtualenv для этого проекта с версией питона я использую для этого:

$ cd /home/projects 
$ /opt/python27/bin/virtualenv acoolproject 
$ cd acoolproject 
$ ./bin/pip install ThepackageIneed. 

Как установить каждые проекты зависимостей отдельно, можно избежать проблем с зависимостями и конфликты версий и версия путаница.

Вы можете включить и отключить среды с virtualenv, я, как правило, никогда не делать этого, я использую питона исполняемый явно вместо:

$ ./bin/python main.py 

или

$ /home7projects/acoolproject/bin/python 

Если мне нужно то, что вы можете 't просто установить с помощью pip, например Plone или nginx или лак, я использую zc.buildout для создания реплицируемой конфигурации среды, zc.buildout также будет выполняться изолированно, поэтому пакеты не будут установлены на основных питонах.

6

Я бы предложил следующее строго. Я использую их для управления базовыми пакетами.

Учебник/блоги, которые должны помочь:

0

Если вы используете Homebrew, вы, вероятно, захотите использовать pip для установки пакетов Python. pip может быть установлен через Homebrew, но Homebrew не содержит формулы для других пакетов Python. Но это довольно легко установить пакеты с помощью пип - так просто, как

$ pip install <package> 

(Имя пакета можно найти на PyPI.) Если вы установили пип через Homebrew, что все, что вам нужно сделать.