Переключающие версии python
История:
Одно из приложений, которое у меня работает на python 2.4 и других на 2.6. Я попытался сделать сим-ссылку python2.4 на python, и все стало расшатываться на ubuntu jaunty.
Теперь я загружаю каждую зависимость 2.4 и устанавливаю ее с помощью установки python2.4 setup.py. Зависимости кажутся бесконечными.
Question1: Как я скажу любой фреймворк, который идет и использует версию так и так pf python, как day django, чтобы использовать 2.6 и сказать mjango, чтобы использовать 2.4? Что-то вроде мы говорим, используя базу данных databasename своего рода синтаксис.
Question2: Есть ли более элегантный способ переключения между версией, поскольку мой взлом символической ссылки был виртуальной катастрофой?
Question3: Могу ли я скачать deb для say hardy и заставить jaunty поверить в это для нее?
Ответы
Ответ 1
Используйте Virtualenv.
Здесь больше информации: Работа с virtualenv.
Используя virtualenv, вы можете создать новую виртуальную среду python с любой версией Python, которую вы хотите для каждого проекта или приложения. Затем вы можете активировать соответствующую среду, когда вам это нужно.
Чтобы расширить мой ответ:
Вы можете установить несколько версий Python на свой компьютер (у меня есть 2.4, 2.5, 2.6 и 3.1 на моей машине - я устанавливаю каждый из источника). Я использую Mac и сохраняю свою систему Python как любую настройку по умолчанию для OS X.
Я использую easy_install для установки пакетов. На ubuntu вы можете получить easy_install следующим образом:
sudo apt-get install python-setuptools
Чтобы установить virtualenv, выполните следующие действия:
easy_install virtualenv
Я стараюсь создать новый virtualenv для каждого проекта, над которым я работаю, и не даю ему доступа к глобальным пакетам сайтов. Это держит все пакеты плотно вместе и позволяет мне иметь конкретные версии всего, что мне нужно.
virtualenv -p python2.6 --no-site-packages ~/env/NEW_DJANGO_PROJECT
И тогда всякий раз, когда я делаю что-либо, связанное с этим проектом, я активирую его:
source ~/env/NEW_DJANGO_PROJECT/bin/activate
Если я запустил python, теперь он использует этот новый python. Если я использую easy_install, он устанавливает вещи в мою новую виртуальную среду.
Итак, virtualenv должен уметь решать все ваши проблемы.
Ответ 2
Pythonbrew - волшебный инструмент. Который также можно назвать менеджером версий Python, подобным менеджеру RVM-Ruby, но Pythonbrew вдохновлен Perlbrew.
Pythonbrew - это программа для автоматизации построения и установки Python в пользователях $HOME.
Dependencies – curl
Перед установкой Pythonbrew установите "завиток" в машине, чтобы установить завиток, используйте приведенную ниже команду в терминале, введите пароль для пользователя при появлении запроса.
$sudo apt-get install curl
После установки curl теперь установите Pythonbrew, скопируйте и вставьте следующие команды в терминал и введите пароль для пользователя при появлении запроса.
Рекомендуемый метод установки - Easy Install
$ sudo easy_install pythonbrew
Чтобы завершить установку, введите следующую команду
$pythonbrew_install
Альтернативный способ установки:
Используйте команду curl для загрузки последней версии pythonbrew из github.
curl -kLO http://github.com/utahta/pythonbrew/raw/master/pythonbrew-install
После загрузки измените "pythonbrew-install" на "выполнимый"
chmod +x pythonbrew-install
Затем запустите pythonbrew-install в терминале
./pythonbrew-install
Теперь Pythonbrew был установлен в "Home Directory"
i.e., /home/user/.pythonbrew
Затем скопируйте и вставьте следующую строку в конец ~/.bashrc
* ПРИМЕЧАНИЕ: измените "user"
на свое имя пользователя в системе
source /home/user/.pythonbrew/etc/bashrc
Вот оно! Закройте терминал.
Шаги по установке разных версий Python:
Откройте новый терминал, введите следующую команду или скопируйте и вставьте ее.
$pythonbrew install 2.6.6
Это установит Python 2.6.6 и установит Python 2.7 или Python 3.2, изменив номер версии в предыдущей команде.
$pythonbrew install 2.7
или
$pythonbrew install 3.2
Обновление: если вы получаете сообщение об ошибке при установке, то установите с помощью следующей команды.
$pythonbrew install --force 2.7
или
$pythonbrew install --force 3.2
Как управлять различными версиями Python, установленными в системе
Например, если в вашей системе установлены Python 2.6.6
, Python 2.7
и Python 3.2
, переключение между версиями может быть выполнено следующим образом:
По умолчанию Python 2.6.6
будет активным и для перехода на Python 2.7 используйте следующую команду
$pythonbrew switch 2.7
По умолчанию Python изменен на Python 2.7.
Теперь, чтобы переключиться на Python 3.2, измените номер версии в предыдущей команде.
$pythonbrew switch 3.2
Используйте приведенную ниже команду, чтобы проверить или просмотреть установленные версии Python
$pythonbrew list
Используйте приведенную ниже команду для проверки или списка доступных версий Python для установки
$pythonbrew list -k
Чтобы удалить любую из установленной версии Python (например, для удаления Python 2.7), используйте следующую команду.
$pythonbrew uninstall 2.7
Используйте приведенную ниже команду для обновления Pythonbrew
$pythonbrew update
Используйте приведенную ниже команду, чтобы отключить Pythonbrew
и активировать версию по умолчанию
$pythonbrew off
Наслаждайтесь опытом установки нескольких версий Python на одном компьютере Linux/ubuntu!
Ответ 3
Более простой подход, чем Virtualenv, - это параллельная установка двух версий Python.
Если существует существующая установка, и вы хотите, чтобы вторая установка в один корневой путь (например,/usr/local), используйте эту цель при установке:
make altinstall
Когда ваша вторая установка - Python 2.6, это оставит вас с /usr/local/bin/python 2.6 рядом со старым /usr/local/bin/python.
Простым способом переключения между этими двумя версиями является использование псевдонима оболочки (alias python =/usr/local/bin/python2.6) в оболочке, где вы вызываете интерпретатор. Но это не будет работать через суб-оболочки и вызовы she-bang.
Ответ 4
Я нахожу http://github.com/utahta/pythonbrew гораздо проще в установке и использовании, чем любое другое решение.
Просто установите его, и у вас будут следующие параметры:
pythonbrew install 2.7.2
pythonbrew use 2.7.2 # use 2.7.2 for a current terminal session
pythonbrew switch 2.7.2 # use 2.7.2 by default system wide
pythonbrew uninstall 2.7.2
Примечание. Если вы используете операционную систему Linux с предустановленным Python, переключение (в системной системе) на другую версию может привести к ошибкам, поэтому будьте осторожны.
Ответ 5
"Question1: Как я скажу любой фреймворк, который идет и использует версию так и так pf python, как day django, чтобы использовать 2.6 и сказать mjango, чтобы использовать 2.4?
Вы просто запускаете их с конкретной версией python, в которой они нуждаются. Запустите mjango с /usr/bin/python 2.4 и django с /usr/bin/python 2.6. Так просто.
"Question2: Есть ли более элегантный способ переключения между версиями, поскольку мой взлом символической ссылки был виртуальной катастрофой?"
Да, см. выше. У вас есть две отдельные установки Python и выполняются явно с различными версиями.
"Question3: Могу ли я скачать deb для say hardy и заставить jaunty поверить в это для нее?"
Это вообще работает. Если это не так, это потому, что у него есть зависимости, которые существуют в Hardy, и не существует в Jaunty, а затем вы не можете.
И вот вопрос 4, который вы не спрашивали, но должен иметь.;)
"Есть ли более простой способ загрузить все эти модули Python?"
Да, есть. Установите setuptools и используйте easy_install. Это не поможет вам с библиотечными зависимостями для тех модулей Python, которые имеют код C и их необходимо скомпилировать. Но это поможет всем остальным. easy_install будет загружать и устанавливать все зависимости Python рассматриваемого модуля за один раз. Это значительно ускоряет установку модулей Python.
Ответ 6
pyenv - еще один менеджер Python. README.md по этой ссылке имеет хороший набор инструкций, но в основном это:
$ cd
$ git clone git://github.com/yyuu/pyenv.git .pyenv
Затем настройте свой $PATH.
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
Установите нужные версии Python:
$ pyenv install 2.7.8
После установки вам необходимо запустить это:
$ pyenv rehash
Затем переключитесь на версию Python, которую вы хотите запустить, для оболочки:
$ pyenv shell 2.7.8
Ответ 7
Перейдите в каталог проекта:
Создать среду:
virtualenv -p python2.7 --no-site-packages ~/env/twoseven
Затем активируйте свой источник:
источник ~/env/twoseven/bin/activate