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

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

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


person Ulf    schedule 07.10.2009    source источник
comment
Просто упомяну, что вы также можете сделать это с помощью virtualenvwrapper.   -  person bias    schedule 28.05.2010
comment
Стоит отметить, что в python 3 есть встроенный эквивалент virtualenv: venv.   -  person naught101    schedule 01.09.2014
comment
Невозможно переключить версию python в текущей среде без создания новой среды?   -  person Charlie Parker    schedule 29.08.2016
comment
youtube.com/watch?v=N5vscPTWKOk Это видео, рекомендованное в документации по virtualenv, выходит за рамки весь этап процесса.   -  person AnandShiva    schedule 26.12.2020


Ответы (35)


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

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

N.B. Для Python 3.3 или более поздней версии см. ответ Aelfinn ниже.

person Daniel Roseman    schedule 07.10.2009
comment
Я подумал, что упомянул, что это работает и для virtualenvwrappers: mkvirtualenv -p python2.6 env - person bias; 28.05.2010
comment
Мне что-то здесь не хватает - разве для этого не требуется, чтобы в системе уже была установлена ​​версия 2.6? Я думал, что точкой virtualenv является то, что у меня может быть версия python, отличная от основной (в моем случае 2.4 на CentOS). Я предполагал, что могу установить virtualenv, затем установить Python 2.6 под ним, чтобы пакеты в env могли использовать? - person John C; 24.05.2011
comment
@ Джон, да, это так. Дело не в virtualenv: дело в том, чтобы создать изолированную среду для Python. Сначала вам нужно будет установить эту версию, но вы можете установить ее локально для своего пользователя. - person Daniel Roseman; 24.05.2011
comment
@JohnC Вы можете использовать pythonbrew для установки альтернативных питонов. - person ashwoods; 02.12.2011
comment
@John C Да (что касается Дэниела), похоже, что смысл virtualenv состоит в том, чтобы взять глобальный исполняемый файл Python и поддерживать отдельные наборы пакетов. Это отличается, скажем, от RVM Ruby, который предназначен для хранения отдельной версии Ruby, а также набора драгоценных камней в одной среде. - person Derek Morrison; 19.05.2013
comment
Если вы немного ленивы: virtualenv -p `which python2.6` <path/to/new/virtualenv> - person blaze; 16.10.2013
comment
pythonbrew больше не поддерживается, вместо этого используйте pyenv. - person DanH; 26.03.2015
comment
При использовании pip после установки duel вы должны указать, какой python pip использовать? (например, 'python2.7 -m pip install SomePackage # в частности Python 2.7') или будет пип в этом virtualenv автоматически знать, какой из них использовать? - person user1807271; 12.01.2016
comment
Параметр -p / --python также работает с virtualenvwrapper функциями, например mkproject. - person Chris Johnson; 05.08.2016
comment
См. Мой ответ ниже для эквивалентного решения с использованием переменных среды. Такой подход означает, что вам не нужно помнить об использовании -p. - person Chris Johnson; 05.08.2016
comment
Нет ли решений, которые переключаются между версиями Python без необходимости создания новой виртуальной среды? - person Charlie Parker; 29.08.2016
comment
virtualenv -p $ (который python3) ‹путь / к / новому / virtualenv /› - person Michael; 20.11.2016
comment
Если вы используете Ubuntu 16.04 или другую версию и получаете ошибки, см. Принятый ответ здесь - stackoverflow.com/questions/37495375/ Это работает и не вредит ОС (обычно любое удаление python в ubuntu плохо ) - person Alex Punnen; 14.11.2017
comment
Отлично, это работает, если вы хотите, чтобы всегда была пивная версия, убедитесь, что вы используете путь / usr / local / bin / python, спасибо - person Radek; 01.08.2018
comment
если не уверен, то иди как virtualenv --python = which python3 venvdir # может быть существующим, даже если проект pycharm загружен в ide - person ; 26.12.2018
comment
Я хочу добавить virtualenv --no-site-packages --python=/usr/bin/python3.6 . - person m.a.d.cat; 21.04.2019
comment
используйте which python или which python3, чтобы найти путь к питону. - person Gokul; 05.08.2019
comment
Это лучшее решение даже для Python 3 или новее. - person Rahul Bali; 09.05.2020
comment
Если вы очень ленивы, просто: </path/to/python/you/want/to/use> -m venv <path/to/new/virtualenv/> - person Stefan; 08.12.2020
comment
это будет работать для Windows stackoverflow.com/a/22793687/15435022 - person mattsmith5; 26.04.2021

Начиная с Python 3, Документация Python предлагаем создать виртуальную среду с помощью следующей команды:

python3 -m venv <myenvname>

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


Устаревшая информация

pyvenv скрипт можно использовать для создания виртуальной среды

pyvenv /path/to/new/virtual/environment

но он устарел, начиная с Python 3.6.

person The Aelfinn    schedule 26.09.2016
comment
Рад, что вы указали на это, он нуждается в дополнительном продвижении. Одна мелочь: теперь они рекомендуют запускать его как python3 -m venv <envname>, чтобы избежать нужды в скриптах-заглушках для всего. - person Paul Everitt; 20.11.2016
comment
Фактически сценарий pyvenv устарел в Python 3.6+, хотя сам базовый модуль venv - нет. Так что используйте python 3 -m venv <myenvname>, как говорит @PaulEveritt. - person RichVel; 20.12.2016
comment
Имейте в виду, что pyvenv или python3 -m venv ... НЕ устанавливайте python-config сценарий. Это означает, что даже после активации среды Python3 общесистемный python-config будет вызываться с запутанными последствиями. См. Этот отчет об ошибке за 2011 г. github.com/pypa/virtualenv/issues/169 и мой вопрос stackoverflow .com / questions / 42020937 / - person Laryx Decidua; 23.02.2018
comment
Обратите внимание, что venv не позволяет создавать virtualenv с другими версиями Python. - Ты уверен, что это правда? Мне кажется, что это отлично сработает, если я создам его с определенной версией Python, например. python3.5 -m venv <myenvname> (при условии, что у меня доступна эта версия Python). - person Dominick Pastore; 29.05.2019
comment
Подтверждение того, что наблюдение @ Nick работает: способ создать venv с определенной версией Python - использовать эту версию при ее настройке. Например: python3.5 -m venv venv - person tanius; 22.10.2019
comment
По-прежнему можно использовать другую версию Python с venv. Вместо предоставления аргумента, как в случае с virtualenv, вы просто убедитесь, что используете соответствующую версию Python для запуска venv. Пример с py средством запуска Python: py -3.3 -m venv my_venv создаст виртуальную среду с использованием Python 3.3. - person cowlinator; 12.05.2020
comment
Что означает -m? - person BenjaminK; 06.05.2021

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

виртуальная среда

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   

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

person zzart    schedule 02.07.2012
comment
Не могли бы вы пояснить, почему это нужно делать именно так: зачем устанавливать python локально? И что еще более важно, зачем устанавливать virtualenv с той версией Python, которую вы хотите использовать с ним? - person lajarre; 08.10.2012
comment
Конечно. Если вы находитесь в среде виртуального хостинга, и сервер предоставляет более старые версии python, которые вам не нравятся - это был мой сценарий. Также, если вам случится разрабатывать проекты на разных серверах, и вы хотите реплицировать эти среды на своем локальном компьютере ... Virtualenv создает жесткие ссылки на библиотеки python. поэтому это действительно важно с версией python, которую вы используете для установки и создания Virtualenv. - person zzart; 12.10.2012
comment
Или, если вы похожи на меня и работаете на заблокированной машине без прав sudo. Локальные копии библиотек, баз данных SQL, языков и компиляторов в изобилии! Спасибо! - person zachd1_618; 24.01.2013
comment
В virtualenv 1.9.1 мне пришлось использовать ~/.localpython/bin/virtualenv вместо virtualenv, чтобы установка прошла без ошибок. Кроме того, используйте source ve/bin/activate вместо source activate. - person Saul; 10.04.2013
comment
Еще одна причина сделать это - опробовать бета-версии до того, как они станут основными, чтобы убедиться, что ваши проекты и их зависимости по-прежнему работают, не рискуя нарушить управление пакетами, ударив что-то и оставив висячие файлы повсюду. Мне нравится этот ответ. - person RobotHumans; 29.12.2013
comment
строка tar -zxvf Python-2.7.2.tar.gz должна быть tar -zxvf Python-2.7.2.tgz - person snuggles; 04.06.2015
comment
Хороший ответ! Могут быть и другие пакеты, которые необходимо установить (для поддержки определенных битов, когда их вызывает Python). Я обнаружил, что на этой странице есть хороший список большинства, если не всех, из них: renoirboulanger.com/blog/2015/04/ - person Joe D'Andrea; 12.02.2016
comment
Намного более простая альтернатива - используйте pyenv, который включает поддержку virtualenv. - person RichVel; 07.05.2017
comment
@zzart Я использовал ./configure --prefix=$HOME/.localpython , но получил configure: error: in `/home/education/public_html/Python-3.5.2 ': configure: error: в $ PATH не найден приемлемый компилятор C - person Surya prakash Patel; 11.08.2018

Есть способ попроще,

virtualenv venv --python=python2.7

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

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

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`
person Daniel Lee    schedule 01.11.2016
comment
К вашему сведению, работает только в том случае, если у вас установлен python2.7 на системном уровне (например, /usr/bin/python2.7) - person kingb12; 27.01.2017
comment
Я тоже смог сделать это с virtualenv venv --python=python3.6 - person Jordan; 07.09.2017
comment
Фактически вы можете отказаться от младшего номера версии. virtualenv env --python=python2 - person Anshul; 05.02.2018
comment
Это правильное решение, когда у вас есть все версии, вы заинтересованы в том, чтобы просто использовать псевдоним, а не полный путь - person user1767754; 20.11.2018
comment
В Windows это сработало как шарм с небольшой поправкой: virtualenv venv --python=<insert_your_python_version_here> где <insert_your_python_version_here> в моем случае C:\Python\Python368\python.exe - person abautista; 16.07.2019
comment
Спасибо, эта команда virtualenv venv --python=python3.8 сработала, но для этого нам нужно загрузить и python3.8, правильно? Теперь у меня есть python3.9 и python3.8, поэтому я задаю этот вопрос .. - person Rohan Devaki; 29.12.2020
comment
В окнах вы можете использовать where python вместо which python - person Manoj D Bhat; 20.01.2021

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

person balazs    schedule 31.07.2011

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

http://docs.python-guide.org/en/latest/dev/virtualenvs/

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

2) Системный питон находится в /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. Благодаря этому все ваши среды будут собраны в одном месте.

person 7stud    schedule 15.01.2015
comment
which pip не сообщает мне версию Python. Это дает мне это- /usr/local/bin/pip. - person Sankalp; 16.03.2018
comment
@Sankalp, если вы перейдете к /usr/local/bin и сделаете $ ls -al pip, вы должны увидеть что-то вроде: pip -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip - person 7stud; 16.03.2018
comment
Уже несколько отмечалось в ответе, но mkproject - это команда, которую следует использовать, если вы хотите, чтобы она создавала как каталог проекта, так и виртуальную среду данной версии Python. mkproject -p /usr/bin/python3.6 myNewPython36Project - person Jim Factor; 24.01.2019
comment
@ 7stud, когда я нажимаю на /usr/local/bin и делаю ls -al pip, я получаю это -rwxr-xr-x 1 root admin 266 23 Mar 09:40 pip - person kd12345; 24.03.2021
comment
@ kd12345, Тогда, может быть, не полагайтесь на значение по умолчанию и укажите версию python, которую вы хотите использовать с virtualenv -p. - person 7stud; 24.03.2021
comment
@ 7stud, когда я бегу which -a python3, я получаю /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 /usr/local/bin/python3 /usr/bin/python3 именно в таком порядке, что это значит? - person kd12345; 25.03.2021
comment
@ kd12345, which -a перечисляет все исполняемые файлы в вашей PATH переменной среды, а не только первый найденный, которые соответствуют python3. Если вы сделаете ls -al /usr/local/bin/python3, вы, вероятно, увидите, что /usr/local/bin/python3 - это ссылка на /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 - person 7stud; 26.03.2021
comment
@ kd12345, исполняемый файл /usr/bin/python3 может быть питоном, установленным в вашей системе. - person 7stud; 26.03.2021
comment
@ 7stud какая разница, какую выбрать? - person kd12345; 28.03.2021

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

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

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

$ source activate name_of_your_virtualenv

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

person kmario23    schedule 30.12.2013
comment
См. Мой ответ ниже для эквивалентного решения с использованием переменных среды. Такой подход означает, что вам не нужно помнить об использовании -p. - person Chris Johnson; 05.08.2016

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

virtualenv -p python2 myenv (для python2)

virtualenv -p python3 myenv (для python3)

person Sachin Kolige    schedule 05.07.2018
comment
Флаг -p python2 работает аналогично поиску / usr / bin / python2. Используйте: virtualenv -p python2.7 myenv для 2.7 и т. Д. - person Yash Sharma; 28.12.2018

[Ноябрь 2019] Мне нужно было установить среду Python 3.7 (env) в моей системе Arch Linux на базе Python 3.8. Python 3.7 больше не был в системе, поэтому я не мог понизить версию Python, чтобы установить необходимый мне пакет.

Кроме того, я хотел использовать этот пакет / Python 3.7 внутри виртуальной среды (venv). Вот как я это сделал.


Загрузите исходные файлы версии Python:

Я загрузил исходные файлы Python 3.7.4 из

https://www.python.org/downloads/source/

to

/mnt/Vancouver/apps/python_versions/src/Python-3.7.4.tgz

Затем я извлек этот архив (исходные файлы) в

/mnt/Vancouver/apps/python_versions/src/Python-3.7.4/


Установка:

[Примечание: в моей системе env, а не venv.]

cd /mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
time ./configure                 ## 17 sec
time make                        ## 1 min 51 sec
time sudo make install           ## 18 sec
time make clean                  ## 0.3 sec

Изучите установленные версии Python:

$ which python
/usr/bin/python

$ python --version
Python 3.8.0

$ which python3.7
/usr/local/bin/python3.7

$ python    ## Python 3.8 [system / env]
Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

$ python3.7    ## newly-installed Python 3.7 package
Python 3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0]
>>>

$ python3.7 --version                                                                                                 
Python 3.7.4

Как создать venv для конкретной версии Python:

https://docs.python.org/3/tutorial/venv.html

12.2. СОЗДАНИЕ ВИРТУАЛЬНЫХ СРЕД

Модуль, используемый для создания виртуальных сред и управления ими, называется venv. venv обычно устанавливает самую последнюю версию Python, которая у вас есть. Если у вас есть несколько версий Python в вашей системе, вы можете выбрать конкретную версию Python, запустив python3 или любую другую версию, которую хотите.

Чтобы создать виртуальную среду, выберите каталог, в котором вы хотите его разместить, и запустите модуль venv как скрипт с путем к каталогу:

python3 -m venv tutorial-env

Это создаст каталог tutorial-env, если он не существует, а также внутри него будут созданы каталоги, содержащие копию интерпретатора Python, стандартную библиотеку и различные вспомогательные файлы. ...


Создайте Python 3.7 venv [в операционной среде / системе Python 3.8]:

python3.7 -m venv ~/venv/py3.7      ## create Python 3.7-based venv
source ~/venv/py3.7/bin/activate    ## activate that venv
deactivate                          ## deactivate that venv (when done, there)

Добавлено в ~/.bashrc:

alias p37='echo "   [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]" && source ~/venv/py3.7/bin/activate'

Тестирование Python 3.7 venv:

$ p37                                                                                                                 
[Python 3.7 venv (source ~/venv/py3.7/bin/activate)]

(py3.7)$ python --version
Python 3.7.4

(py3.7)$ python
Python 3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] 
>>>
person Victoria Stuart    schedule 20.11.2019
comment
Это чрезвычайно подробный ответ! :) Я сталкиваюсь с этой проблемой каждый раз, когда мне нужно что-то перенести из Arch Linux в любую другую (например, Debian-ish) систему. - person Robbie Capps; 18.12.2019
comment
@ Виктория Стюарт, большое спасибо. Это именно то, что я искал. - person daddyodevil; 01.02.2020
comment
Вот хорошие пошаговые инструкции по установке Python 3.7 из исходного кода на Debian linuxize.com/post/how-to-install-python-3-7-on-debian-9. Но, как обычно, предлагается sudo make altinstall, и я настоятельно рекомендую вместо этого установить его как обычный пользователь, например, ./configure --prefix=~/my-python-3.7 && make -j8 && make install. Тогда вы можете сделать ~/my-python-3.7/bin/python -m venv myvirtualenv - person oseiskar; 01.07.2020

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

python3 -m virtualenv venv

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

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

person Nima Soroush    schedule 12.12.2015
comment
Я получил эту ошибку при запуске первой команды / usr / local / bin / python3: Нет модуля с именем virtualenv - person tanvi; 23.05.2016
comment
@tanvi: сначала вам нужно установить virtualenv на ваш python3. Сначала запустите pip3 install virtualenv - person Nima Soroush; 23.05.2016

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

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

export VIRTUALENV_PYTHON=/path/to/desired/version

Тогда virtualenv будет использовать это каждый раз, когда вы не укажете -p в командной строке.

person Chris Johnson    schedule 05.08.2016
comment
Это прекрасно сработало. Есть идеи, зачем устанавливать export VIRTUALENVWRAPPER_PYTHON=/path/to/desired/version в virtualenvwrapper docs не сработало, но это решение сработало? - person YPCrumble; 09.11.2016
comment
Этот env var управляет тем, что Python virtualenvwrapper использует при запуске и не имеет ничего общего с установками. - person Chris Johnson; 09.11.2016
comment
Это сработало для меня. Больше не нужно использовать -p каждый раз, когда я создаю новый virtualenv. Спасибо! - person nedblorf; 10.04.2019

На 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
person silverdagger    schedule 02.09.2015
comment
У команды должна быть mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name} версия, а не версия. Если бы SO допускала короткие правки, я бы это исправил. - person Martin Burch; 04.09.2015
comment
pyenv включает поддержку virtualenv через плагин pyenv-virtualenv, поэтому я считаю, что мне действительно не нужен virtualenvwrapper. Подробнее см. my pyenv ответ. - person RichVel; 07.05.2017
comment
Я определенно согласен с @RichVel, использование предоставленного pyenv-virtualenv с pyenv - это самый бесполезный опыт, который мы могли бы пожелать! (см. realpython.com/intro-to-pyenv/#virtual- environment-and-pyenv) - person Bluu; 01.12.2020

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

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

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

mkvirtualenv -p $(which python2) <env_name>

person Gerard    schedule 19.09.2016

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

 $ python3 -m pip install virtualenv
 $ python3 -m virtualenv --python=python2 vp27
 $ source vp27/bin/activate
 (vp27)$ python --version
 Python 2.7.14
person Zihao Zhao    schedule 24.04.2018
comment
Установите virtualenv на python3, если у вас нет: python3 -m pip install virtualenv - person Zihao Zhao; 03.07.2018

В подсистеме Windows для Linux:

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

    virtualenv --python=/usr/bin/python3 env
    
  2. Активируйте это:

    source env/bin/activate
    
person Marcin Rapacz    schedule 26.05.2017

В окнах:

py -3.4x32 -m venv venv34

or

py -2.6.2 -m venv venv26

При этом используется py launcher, который найдет для вас подходящий исполняемый файл Python. (при условии, что он у вас установлен).

person jnnnnn    schedule 17.04.2018

Я использую pyenv для управления своей версией Python.

pyenv install 3.7.3
pyenv local 3.7.3

Проверьте свою версию Python:

$ python --version
Python 3.7.3

Создайте виртуальную среду с помощью venv:

python -m venv .

Затем активируйте виртуальную среду:

source bin/activate

Проверьте свою версию Python:

$ python --version
Python 3.7.3

Возможно, вам потребуется удалить предыдущую виртуальную среду

rm -rf bin
person brandonbanks    schedule 16.08.2019
comment
Как упоминалось в комментарии к другому ответу: еще проще использовать предоставленный pyenv-virtualenv с pyenv (cf realpython.com/intro-to-pyenv/#virtual-environments-and-pyenv) - person Bluu; 01.12.2020

Это кажется немного сложным для Windows. Если вы в Windows используете python 3.3 или новее, вы можете использовать программу запуска python py, чтобы сделать это намного проще. Просто установите другую версию Python и запустите:

py -[my version] -m venv env

Это создаст виртуальную среду с именем env в вашем текущем каталоге с использованием python [my version]. В качестве примера:

py -3.7 -m venv env
./env/Scripts/activate

Это создает виртуальную среду с именем env с использованием python3.7 и активирует ее. Никаких дорожек или других сложных вещей не требуется.

person Cole Smith    schedule 07.03.2020
comment
Разве вместо этого не должно быть py -3.7 -m venv env (-m отсутствует)? - person sinoroc; 08.03.2020
comment
Ага, исправлено в посте !. - person Cole Smith; 09.04.2020
comment
Запускать py опасно, потому что он может запускать Python в другом каталоге, если он настроен. Лучше всего находиться в правильном каталоге Python с python.exe и вместо этого использовать ключевое слово python. - person MacGyver; 24.03.2021

Как уже упоминалось в нескольких ответах, использование virtualenv - чистое решение. Однако небольшая ошибка, о которой все должны знать, заключается в том, что если псевдоним для python установлен в bash_aliases, например:

python=python3.6

этот псевдоним также будет использоваться внутри виртуальной среды. Таким образом, в этом сценарии запуск python -V внутри виртуальной среды всегда будет выводить 3.6 независимо от того, какой интерпретатор используется для создания среды:

virtualenv venv --python=pythonX.X
person PetarMI    schedule 13.05.2020

У вас должна быть установлена ​​эта версия Python. Если он у вас есть, то в основном

С virtualenv,

virtualenv --python=python3.8 env/place/you/want/to/save/to

с венвом

python3.8 -m venv env/place/you/want/to/save/to

Приведенные выше примеры относятся к python3.8, вы можете изменить его, чтобы иметь разные версии виртуальных сред, если они установлены на вашем компьютере.

person CrmXao    schedule 20.01.2021
comment
как установить конкретную версию python с помощью приведенной выше команды? - person Chandan; 03.02.2021
comment
если на вашем компьютере установлен, например, python3.8, в приведенном выше примере будет создана среда python3.8. - person CrmXao; 03.02.2021
comment
да, он работает, как вы сказали, но мне нужна другая версия, значит на моем компьютере установлен python3.9, но мне нужно создать виртуальный env для python3.6. - person Chandan; 03.02.2021
comment
хорошо, просто напишите python3.6 вместо 3.8 .. - person CrmXao; 03.02.2021
comment
Это самый простой и лучший ответ, охватывающий большинство случаев. - person Lyle; 07.04.2021

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

Я попытался создать virtualenv для Python2 и Python3 с помощью следующих команд.

Здесь я использовал venv2 и venv3 в качестве имен для Python2 и Python3 соответственно.

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$ 
person hygull    schedule 16.12.2017

Это сработало для моего использования в Windows 10, где у меня Python 3.7, и я хочу понизить версию проекта на Python 3.6.6:

Я использовал venv для создания новой среды под названием venv, которую я загрузил с https://www.python.org/downloads/windows/; установить Скачать исполняемый установщик Windows x86-64-; затем я использовал следующую командную строку в каталоге, в котором я хочу создать свою среду

>C:\Users\...\Python\Python36\python.exe -m venv venv

Наконец, я активировал среду с помощью командной строки:

>venv\Scripts\activate.bat

И проверьте версию python, позвонив:

>python --version Python 3.6.6

person AlphaSeekness    schedule 21.12.2020

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

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
person Dadaso Zanzane    schedule 03.06.2016

virtualenv -p python3 myenv

Ссылка на создание virtualenv

person Aseem    schedule 03.07.2018

Это была ошибка virtualenv. Решением должно быть простое обновление вашего пипса.

pip install --upgrade virtualenv

person Mohit    schedule 04.04.2019

Конец 2020 года:

Самым беспроблемным способом использования virtualenv (дополнительное преимущество: с любой возможной версией Python) было бы использование pyenv и его (связанного) плагина pyenv-virtualenv (cf https://realpython.com/intro-to-pyenv/#virtual-environment-and-pyenv)

Использование: pyenv virtualenv <python_version> <environment_name>

Установка:

cf https://github.com/pyenv/pyenv-installer

При этом в настоящее время лучшей альтернативой вместо использования virtualenvpip) будет Поэзия. (вместе с pyenv, указанным выше, для обработки различных версий Python).

Другой вариант, поскольку он поддерживается непосредственно PyPA (организацией, стоящей за pip и PyPI) и возобновил выпуск с конца мая (до этого не выпускался с конца 2018 года ...), будет Pipenv

person Bluu    schedule 01.12.2020

Для систем Debian (debian 9) в 2019 году я обнаружил простое решение, которое может решить проблему из виртуальной среды.

Предположим, виртуальная среда была создана с помощью:

python3.7 -m venv myenv

но есть только версии python2 и python2.7, и вам нужны последние функции python3.7.

Затем просто запустите команду:

(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/

добавит пакеты python3.7, если они уже доступны в вашей системе.

person David Golembiowski    schedule 23.02.2019

Это сработало для меня в окнах с установкой python 2:

  1. Шаг 1. Установите версию Python 3.
  2. Шаг 2: создайте папку env для виртуальной среды.
  3. Шаг 3: c: \ Python37 \ python -m venv c: \ path \ to \ env.

Вот как я создал виртуальную среду Python 3 в моей существующей установке Python 2.

person Community    schedule 19.06.2019

Да, вам просто нужно установить другую версию python и определить местоположение вашей другой версии python в вашей команде, например:

virtualenv / главная / платежная ведомость / документы / env -p / usr / bin / python3

person Nitin Nath Giri    schedule 18.07.2019

Вот пошаговый шаг по созданию виртуальной среды в папке Visual Studio Code: Я использовал Powershell (режим администратора):
1. Я создаю папку VSCode - «D: \ Code_Python_VE», в которой я хочу создать виртуальную среду. < br> 2. Затем я набираю команду - «pip3 install virtualenv». (D: \ Code_Python_VE> pip3 install virtualenv) 3. D: \ Code_Python_VE> python3 -m venv project_env
4. D: \ Code_Python_VE> project_env \ Scripts \ activate.bat
5. D: \ Code_Python_VE> ls - Появится новый каталог «project_env».
6. D: \ Code_Python_VE> code. Это запустит Visual Studio Code. Убедитесь, что это команда (code.).
7. Создайте launch.jason со следующим содержимым:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "python",
            "request": "launch",
            "name": "Python: Current File (Integrated Terminal 1)",
            "program": "${file}"
        },
        {
            "name": "Python: Current File (Integrated Terminal 2)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }
    ]
}

(Пожалуйста, найдите, как перейти в окно отладки и добавить новую конфигурацию в VS Code).

  1. Нажмите F1 в коде Visual Studio, и откроется палитра команд - выберите Python Interpreter и выберите виртуальную среду project_env.
  2. Добавьте файл test.py с одним оператором print («Hello World»).
  3. Запустите эту программу.
  4. В терминале кода Visual Studio -
    (project_env) d: \ Code_Python_VE> python -m pip install --upgrade
    Надеюсь, это поможет.
person TanuAD    schedule 10.09.2019

Я использую Windows, поэтому я должен использовать .exe в пути pthon

virtualenv -p=C:\Python27\python2.exe <envname>
person Aminah Nuraini    schedule 15.11.2020

Удивлен, что пока никто не упомянул conda. Я обнаружил, что это намного проще, чем другие упомянутые здесь методы. Скажем, у меня есть python 3.9 и python 2.7, а проект, над которым я работаю, был python 3.5.4, я мог просто создать изолированный виртуальный env для 3.5.4 с помощью команды conda, не загружая ничего другого.

Чтобы сначала увидеть список доступных версий Python, используйте команду

conda search "^python$"

Чтобы создать виртуальную среду для Python версии x.y.z, используйте команду

conda create -n yourenvname python=x.y.z

Активируйте Venv с помощью

conda activate yourenvname

Деактивировать с помощью

conda deactivate

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

conda remove -n yourenvname --all

person sparker    schedule 30.11.2020

UBUNTU 19.04 / Global Python 3.7.

Это сработало для меня, включив среду Python 3.8 с использованием рекомендованного venv для разработки на Python 3.

Установите модуль venv 3.8 и 3.8: $ sudo apt install python3.8 python3.8-venv
плюс любые другие необходимые вам модули

Создайте свой виртуальный Env, используя версию Python, которую вы хотите в этом env

$ /usr/bin/python3.8 -m venv python38-env

переключитесь в свою виртуальную среду

$ source python38-env/bin/activate

python -V = python 3.8
person Simon P    schedule 22.10.2019

Я использовал этот ответ для Windows

https://stackoverflow.com/a/22793687/15435022

py -3.4 -m venv c:\path\to\wherever\you\want\it
person mattsmith5    schedule 26.04.2021

person    schedule
comment
См. Мой ответ ниже для эквивалентного решения с использованием переменных среды. Такой подход означает, что вам не нужно помнить об использовании -p. - person Chris Johnson; 05.08.2016
comment
Нет ли решений, которые переключаются между версиями Python без необходимости создания новой виртуальной среды? - person Charlie Parker; 29.08.2016
comment
Будет ли это работать, если вы хотите установить версию Python, которая не установлена ​​в вашей системе? Допустим, вы хотите проверить python3.6, но не хотите касаться python3.5, установленного на вашем компьютере? - person alpha_989; 31.07.2018
comment
@ alpha_989, ты найдешь для этого решение? - person Daniil Mashkin; 28.11.2019