Фон :
Поскольку я разрабатываю программы на Python, которые должны работать на разных версиях Python, я установил разные версии Python на свой компьютер.
Я использую FC 13, поэтому он поставляется с Python 2.6, предварительно установленным в /usr/bin/python2.6
и /usr/lib/python2.6
.
Я установил python 2.5 из исходного кода, и, чтобы все было в порядке, я использовал --prefix=/usr
опцию, которая установила python в /usr/bin/python2.5
и /usr/lib/python2.5
.
Теперь, когда я запускаю python
подсказки, я использую версию 2.5. Однако у меня возникли некоторые проблемы с установкой.
Управление пакетами :
Используя easy_install, пакеты всегда устанавливаются в /usr/lib/python2.6/site-packages/
. Я скачал setuptools
.egg для Python 2.5 и попытался установить его, но он выдает ошибку:
/usr/lib/python2.5/site-packages does NOT support .pth files
Кажется, что python2.5 не в моей PYTHONPATH. Я думал, что установка по умолчанию добавит себя в PYTHONPATH, но когда я пишу echo $PYTHONPATH
в Promt, я просто получаю пустую строку.
Это звучит как идеальное приложение для virtualenv , очень популярного инструмента для создания изолированных сред Python. Это пример команды для указания версии Python
источник
virtualenv
, что решение в этом случае. Смотри мой ответ.Это потому, что distutils добавляет строку shebang ко всем устанавливаемым скриптам. Если вы запускаете
easy_install
скрипт напрямую, он исполняется с интерпретатором, с которым он был установлен (согласно строке shebang). Которыйeasy_install
запускается, зависит от того,PATH
нет лиPYTHONPATH
. Если вы хотите установить пакет в экземпляре Python 2.5, вы должны запустить,easy_install
указав интерпретатор Python для использования:Строго говоря,
virtualenv
здесь не помогает, поскольку он должен быть создан в контексте базового Python, что является точно такой же проблемой, как и при запускеeasy_install
. Вот для чего--python
аргументvirtualenv
. По какой-то причинеeasy_install
не предоставляет аналогичный аргумент, поэтому он должен быть запущен с определенным интерпретатором Python, как показано выше.источник
Я также использую Fedora 13 и
PYTHONPATH
не установлен.В Python
sys.path
предоставит вам список путей, используемых для импорта скриптов.Я не знаком с тем, как
easy_install
решается каталог назначения, но я уверен, что будет аргумент командной строки, который вы могли бы дать.Попробуйте указать, под какой версией Python работать, указав
easy_install
перед вашей командой полный путь к нужному вам питону.Также проверьте,
easy_install
является ли символическая ссылка в bin на скрипт в одной версии Python, которую вы установили.источник
Virtualenv определенно находка здесь.
В моей настройке переменная окружения
VIRTUALENV_USE_DISTRIBUTE
установлена на 1, так что вместо setuptools используется более современный пакет Distribute. Я создал виртуальные среды для двух версий Python в моей системе следующим образом:Затем я создал три псевдонима
.bashrc
:Таким образом, я могу использовать,
py2
чтобы перейти к стандартному Python 2.6 иpy3
перейти к стандартному Python 3.2. Вводidle
будет выполняться в зависимости от версии IDLE, подходящей для виртуальной среды, в которой я нахожусь.Установка пакетов в одну из этих виртуальных сред обычно включает в себя
pip install
команду.источник