Создайте virtualenv как с python2, так и с python3

Я попытался использовать virtualenvwrapper для создания virtualenv как с python2, так и с python3

Согласно virtualenv с python2 и python3 через Homebrew, я надеялся, что это сработает:

(Имя virtualenv - "двойное")

mkvirtualenv double -p `which python`
mkvirtualenv double -p `which python3`

В нем упоминается, что

Not overwriting existing python script both/bin/python (you must use both/bin/python3.4)

Но это не похоже на правду. Набор python python2.7 python3 и python3.4 запускает интерпретатор python3.4.


person Zweedeend    schedule 06.11.2014    source источник
comment
Чего вы этим пытаетесь достичь? Основным преимуществом virtualenvs является разделение отдельных миров для Python 2 и Python 3.   -  person Kevin    schedule 06.11.2014
comment
Я работаю над проектом, который работает как на python2, так и на python3. Я не хочу постоянно переключать virtualenv. python2 и python3 имеют свою собственную версию pip и хранят пакеты сайтов в разных местах, поэтому я не вижу проблемы.   -  person Zweedeend    schedule 06.11.2014
comment
Если целью является тестирование проекта, используйте вместо этого tox для запуска тестов в Python 2 и 3. В противном случае я предлагаю разработать его в 3.x и запустить в 2 отдельно. Все упомянутые здесь инструменты были разработаны с учетом одного Python на каждую виртуальную среду, поэтому, хотя сначала может показаться, что что-то работает, нет никакой гарантии, что он будет продолжать работать.   -  person Simeon Visser    schedule 06.11.2014
comment
Я совершенно уверен, что virtualenv не дает таких гарантий, поскольку virtualenv по определению является изолированной средой для одной версии интерпретатора Python. Создайте по одной версии для каждого интерпретатора Python, который вы хотите протестировать. Если вам нужно запустить несколько интерпретаторов, обработайте этот слой выше virtualenv, как сценарий (назовем его test.sh), который вы используете для запуска тестов.   -  person Mikko Ohtamaa    schedule 06.11.2014


Ответы (5)


К сожалению, virtualenv поддерживает версию с одним интерпретатором.

Если вам нужно использовать несколько версий Python в одной кодовой базе, создайте отдельные виртуальные среды.

person Andrew Svetlov    schedule 19.11.2014

virtualenv не поддерживает несколько версий интерпретатора. Я предлагаю использовать разные среды для каждой из версий:

virtualenv -p /usr/bin/python3.3 py3env
virtualenv -p /usr/bin/python py2env
person Alexander    schedule 22.11.2014

virtualenv поможет вам изолировать окружающую среду.

Он не может поддерживать несколько версий Python одновременно. Вы можете попробовать pyenv и pyenv-virtualenv. Он поддерживает смену папки на другую версию Python и рабочую среду. Он очень легко переключает версию.

Если вы не можете установить pyenv и работать на Mac. anyenv может помочь вам установить pyenv.

Пример:

$ pyenv install 3.4.1
$ pyenv install 2.7.6
$ pyenv virtualenv 3.4.1 mypy3
$ pyenv virtualenv 2.7.6 mypy2
$ pyenv versions
  * system
    3.4.1
    2.7.6
    mypy3

$ cd /work/
$ pyenv local mypy3      # Use Py3 now
$ pyenv local mypy2      # Use Py2 now 
person Puffin GDI    schedule 22.11.2014

У меня есть решение для этого с участием Vagrant / VirtualBox ... (у него есть мои настройки начальной загрузки для запуска проекта django, но разветвляйте его и сходите с ума!)

пакет здесь, https://github.com/andrewyoung1991/python-3.4.1-vagrant-bootstrap.git, к сожалению, virtual-env - это игра с одним питоном, но с VirtualBox вы можете свободно работать в песочнице, вызывая python2 или python3.

person a_young    schedule 20.11.2014

virtualenv -p /path/to/your/python/version/exectuable ENV

это то, что вы хотите. (Я знаю, что это старый вопрос, но я посмотрел здесь и обнаружил, что ответы не обновляются).

person A K    schedule 09.07.2019