На мой взгляд, лучший способ работы с пакетами Python - это иметь набор установок Python отдельно от системы Python, по одной на каждую нужную вам версию. Таким образом, я не загрязняю основной питон старыми версиями пакетов, и я могу удалить их и переустановить без проблем с любым из моих проектов.
Подробности:
На OS X с использованием версий Macports все в порядке.То же самое можно сказать и о домашнем пиве, хотя я никогда не использовал его.(В Linux я устанавливаю Python из исходного кода в / opt / pythonxx /, например / opt / python25 /, / opt / python26 /, / opt / python27 и /opt/python31.)
I, затем Никогда не устанавливайте какие-либо пакеты в эти Pythons, за исключением virtualenv
, distribute
и pip
, которые я устанавливаю во всех них.Когда я хочу установить пакет для проекта, я делаю virtualenv для этого проекта с версией Python, которую я использую для него:
$ cd /home/projects
$ /opt/python27/bin/virtualenv acoolproject
$ cd acoolproject
$ ./bin/pip install ThepackageIneed.
Поскольку вы устанавливаете зависимости каждого проекта отдельно, вы избегаете проблем с зависимостями и версииконфликты и путаница версий.
Вы можете включать и отключать среды с помощью virtualenv, я этого никогда не делаю, вместо этого я использую исполняемый файл python:
$ ./bin/python main.py
или
$ /home7projects/acoolproject/bin/python
Если мне нужны вещи, которые вы не можете просто установить с помощью pip, такие как Plone, или nginx или лак, я использую zc.buildout, чтобы создать конфигурацию реплицируемой среды, zc.buildout также будет работать изолированно, поэтому никаких пакетовустанавливается в главных питонах.