Используйте другую версию Python с virtualenv - PullRequest
929 голосов
/ 08 октября 2009

У меня есть система Debian, в настоящее время работающая с python 2.5.4. У меня virtualenv правильно установлен, все работает нормально. Есть ли вероятность, что я смогу использовать virtualenv с другой версией Python?

Я скомпилировал Python 2.6.2 и хотел бы использовать его с некоторым virtualenv. Достаточно ли перезаписать двоичный файл? Или я должен что-то изменить в отношении библиотек?

Ответы [ 22 ]

1358 голосов
/ 08 октября 2009

Просто используйте параметр --python (или короткий -p) при создании экземпляра virtualenv, чтобы указать исполняемый файл Python, который вы хотите использовать, например ::

virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>

N.B. Для Python 3.3 или новее см. ответ Aelfinn ниже.

204 голосов
/ 27 сентября 2016

ОБНОВЛЕНИЕ: Для Python3.6 приведенный ниже сценарий pyvenv устарел. Вместо, Документы Python предлагают создать виртуальную среду с помощью следующей команды:

python3 -m venv <myenvname>

Для python3 (3.3+) используйте вышеуказанный метод или команду script pyvenv.

pyvenv /path/to/new/virtual/environment

Обратите внимание, что venv не позволяет создавать virtualenv с другими версиями Python. Для этого установите и используйте пакет virtualenv .

173 голосов
/ 03 июля 2012

Это шаги, когда вы находитесь в среде общего хостинга и вам нужно установить и завершить работу Python из исходного кода, а затем создать venv из вашей версии Python. Для Python 2.7.9 вы должны сделать что-то вроде этого:

mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install

виртуальный env

cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate   

Естественно, это может быть применимо к любой ситуации, когда вы хотите воспроизвести точную среду, в которой вы работаете и в которой развертываете.

96 голосов
/ 04 ноября 2009
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
81 голосов
/ 01 ноября 2016

Есть более простой способ,

virtualenv venv --python=python2.7

Благодаря комментарию это работает, только если у вас установлен python2.7 на системном уровне (например, /usr/bin/python2.7).

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

virtualenv venv --python=/usr/local/bin/python

Вы можете найти путь к вашей установке Python с помощью

which python

Это также будет работать с питоном 3.

which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3

Конечное уплотнение до:

virtualenv venv -p `which python`
virtualenv venv -p `which python3`
68 голосов
/ 01 августа 2011

Под Windows для меня это работает:

virtualenv --python=c:\Python25\python.exe envname

без python.exe Я получил WindowsError: [Error 5] Access is denied У меня установлен Python2.7.1 с virtualenv 1.6.1, и я хотел python 2.5.2.

29 голосов
/ 15 января 2015

Mac OSX 10.6.8 (Snow Leopard):

1) Когда вы делаете pip install virtualenv, команда pip ассоциируется с одной из ваших версий python, и virtualenv устанавливается в эту версию python. Вы можете сделать

 $ which pip   

чтобы увидеть, что это за версия python. Если вы видите что-то вроде:

 $ which pip
 /usr/local/bin/pip

затем выполните:

$ ls -al /usr/local/bin/pip
lrwxrwxr-x  1 root  admin  65 Apr 10  2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip

Вы можете увидеть версию Python в выводе.

По умолчанию это будет версия python, которая используется для любой новой среды, которую вы создаете. Однако вы можете указать любую версию python, установленную на вашем компьютере, для использования в новой среде с помощью -p flag:

$ virtualenv -p python3.2 my_env  
Running virtualenv with interpreter /usr/local/bin/python3.2  
New python executable in my_env/bin/python  
Installing setuptools, pip...done.  

virtualenv my_env создаст папку в текущем каталоге, которая будет содержать исполняемые файлы Python и копию пункта [команда], которую вы можете использовать для установки других пакетов.

http://docs.python -guide.org / о / последние / DEV / virtualenvs /

virtualenv просто копирует python из местоположения на вашем компьютере во вновь созданный каталог my_env / bin /.

2) Системный Python находится в /usr/bin, в то время как различные версии Python, которые я установил, по умолчанию были установлены в:

 /usr/local/bin

3) У различных установленных мной питонов есть имена вроде python2.7 или python3.2, и я могу использовать эти имена, а не полные пути.

======== VIRTUALENVWRAPPER =========

1) У меня были некоторые проблемы с работой virtualenvwrapper. Это то, что я положил в ~/.bash_profile:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects  #Not very important -- mkproject command uses this
#Added the following based on: 
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh

2) -p option работает по-другому с virtualenvwrapper: я должен указать полный путь к интерпретатору Python, который будет использоваться в новой среде (когда я не хочу использовать версию Python по умолчанию):

$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate

removes the 'bin' directory of the environment activated with 'source
activate' from PATH. 

В отличие от virtualenv, virtualenvwrapper создаст среду в месте, указанном переменной среды $ WORKON_HOME. Это хранит все ваше окружение в одном месте.

21 голосов
/ 30 декабря 2013

Предположим, в настоящее время у вас установлен python 2.7 в virtualenv. Но вы хотите использовать python3.2, вы должны обновить это:

$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv

Затем активируйте virtualenv :

$ source activate name_of_your_virtualenv

и затем выполните: python --version в оболочке, чтобы проверить, обновлена ​​ли ваша версия.

15 голосов
/ 05 июля 2018

Эти две команды должны нормально работать для новичка

virtualenv -p python2 myenv (для python2)

virtualenv -p python3 myenv (для python3)

10 голосов
/ 13 декабря 2015

Вы можете позвонить virtualenv с нужной вам версией Python. Например:

python3 -m virtualenv venv

Или, в качестве альтернативы, прямо указывает на ваш путь к virtualenv. например для окон:

c:\Python34\Scripts\virtualenv.exe venv

И запустив:

venv/bin/python

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

вы можете увидеть версию Python, установленную в виртуальной среде

...