Используйте другую версию Python с virtualenv

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

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

19 ответов


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

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

Б. Н. К Python 3.3 или позже, обратитесь к Aelfinn это ответ ниже. [Примечание редактора: я знаю, что обычно это должен быть комментарий, а не редактирование, но новый комментарий будет скрыт, и я просто потратил 45 минут на распутывание ошибок, потому что этот важный ответ был похоронен под тремя или тремя четыре попугая отвечают. Я просто пытаюсь сэкономить время.]


это шаги, когда вы находитесь в среде общего хостинга и вам нужно установить & complie 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   

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


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

python3 -m venv <myenvname>

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

pyvenv /path/to/new/virtual/environment

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


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

под 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.


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

virtualenv venv --python=python2.7

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

в противном случае, если вы используете доморощенного, вы можете использовать путь, чтобы дать вам то, что вы хотите.

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

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

which python

Это также будет работать с 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`

Mac и OSX 10.6.8 (Снежный Барс):

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 и копию pip [команда] , которую можно использовать для установки других пакеты.

http://docs.python-guide.org/en/latest/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) работает по-другому с 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. Это удерживает все ваше окружение в одном месте.


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

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

затем активировать виртуальное окружение by:

$ source activate name_of_your_virtualenv

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


можно назвать virtualenv С версией python, которую вы хотите. Например:

python3 -m virtualenv venv

или, альтернативно, непосредственно укажите свой путь virtualenv. например, для windows:

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, установленную в виртуальной среде


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

ваш другой вариант-установить переменную среды, которая делает то же самое, что и -p. Установите это через свой ~/.bashrc файл или где вы управляете переменными среды для ваших сеансов входа в систему:

export VIRTUALENV_PYTHON=/path/to/desired/version

затем virtualenv будет использовать в любое время не указана -p в командной строке.


на mac я использую pyenv и virtualenvwrapper. Мне пришлось создать новый virtualenv. Вам нужен homebrew, который я предполагаю, что вы установили, если вы находитесь на mac, но просто для удовольствия:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python  {virtual_env_name}

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

pip install -r requirements.txt

еще проще, используя подстановку команд, чтобы найти python2 для вас:

virtualenv -p $(which python2) <path/to/new/virtualenv/>

или при использовании virtualenvwrapper :

mkvirtualenv -p $(which python2) <env_name>


в подсистеме windows для linux:

  1. создать среду для python3:

    virtualenv --python=/usr/bin/python3 env
    
  2. активировать его:

    source env/bin/activate
    

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

virtualenv -p python2 myenv (для python2)

virtualenv -p python3 myenv (для python3)


для Mac(High Sierra) установите virtualenv в python3 и создайте virtualenv для python2:

$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14

это сработало для меня

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3

да, приведенные выше ответы верны и отлично работают в системах на базе Unix, таких как Linux & MAC OS X.

Я пытался создать виртуальное окружение на вместо python2 & Питон3 со следующими командами.

здесь я использовал venv2 & venv3 как их имена для вместо python2 & Питон3 соответственно.

вместо python2 "

MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/admin/venv2/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv2/bin/
activate        easy_install        pip2.7          python2.7
activate.csh        easy_install-2.7    python          wheel
activate.fish       pip         python-config
activate_this.py    pip2            python2
MacBook-Pro-2:~ admin$ 

Python3"

MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/admin/venv3/bin/python3
Also creating executable in /Users/admin/venv3/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv3/bin/
activate        easy_install        pip3.6          python3.6
activate.csh        easy_install-3.6    python          wheel
activate.fish       pip         python-config
activate_this.py    pip3            python3
MacBook-Pro-2:~ admin$ 

проверка мест установки Python

MacBook-Pro-2:~ admin$ which python2
/usr/local/bin/python2
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ which python3
/usr/local/bin/python3
MacBook-Pro-2:~ admin$ 

на windows:

py -3.4x32 -m venv venv34

или

py -2.6.2 -m venv venv26

использует py лаунчер который найдет правильный исполняемый файл python для вас (при условии, что он установлен).