Как создать виртуальный env для другой версии python? [Дубликат]

Это отображается для меня при переключении на OSX 10.10 (Yosemite). Я исправил его, переключившись на WXAgg.

fink install wxpython300-py27
mkdir ~/.matplotlib
echo "backend : WXAgg" >>~/.matplotlib/matplotlibrc

http://matplotlib.org/1.3.0/faq/usage_faq.html#what-is-a-backend

Если файл matplotlibrc там не найден, поместите matplotlibrc и проверьте местоположение с помощью:

import matplotlib as mpl
mpl.get_configdir()

782
задан bias 28 May 2010 в 04:24
поделиться

19 ответов

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

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

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

1181
ответ дан Rotareti 18 August 2018 в 20:00
поделиться
  • 1
    Я решил, что я бы сказал, что это работает и для virtualenvwrappers: mkvirtualenv -p python2.6 env – bias 28 May 2010 в 04:24
  • 2
    Можете ли вы изменить версию Python на более поздний момент? – Sam 21 April 2011 в 12:39
  • 3
    Мне что-то не хватает - не требуется ли устанавливать 2.6 в систему? Я думал, что point virtualenv состоит в том, что у меня может быть версия python, отличная от основной (в моем случае 2.4 на CentOS). Я предполагал, что могу установить virtualenv, then установить Python 2.6 под него для пакетов в env, чтобы использовать? – John C 24 May 2011 в 15:31
  • 4
    @ Джон, да. Это не точка virtualenv: дело в том, чтобы создать изолированную среду для Python. Сначала вам нужно будет установить эту версию - вы можете установить ее локально для своего пользователя. – Daniel Roseman 24 May 2011 в 15:47
  • 5
    Если вы немного ленивы: virtualenv -p `which python2.6` <path/to/new/virtualenv> – blaze 16 October 2013 в 01:57

Mac OSX 10.6.8 (Snow Leopard):

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

 $ 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 / ru / 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) -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. Это держит все ваши среды в одном месте.

26
ответ дан 7stud 18 August 2018 в 20:00
поделиться
  • 1
    which pip не говорит мне версию Python. Это дает мне это /usr/local/bin/pip. – Sankalp 16 March 2018 в 03:36
  • 2
    @Sankalp, Если вы cd до /usr/local/bin и do $ ls -al pip, вы должны увидеть что-то вроде: pip -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip – 7stud 16 March 2018 в 03:44
1
ответ дан Aseem Hegshetye 18 August 2018 в 20:00
поделиться

В 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.

63
ответ дан balazs 18 August 2018 в 20:00
поделиться

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

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

export VIRTUALENV_PYTHON=/path/to/desired/version

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

7
ответ дан Chris Johnson 18 August 2018 в 20:00
поделиться
  • 1
    Это прекрасно работало. Любая идея, почему установка export VIRTUALENVWRAPPER_PYTHON=/path/to/desired/version за virtualenvwrapper docs не работала, но это решение действительно сработало? – YPCrumble 8 November 2016 в 23:37
  • 2
    Этот элемент управления env var, который использует Python virtualenvwrapper при запуске, не имеет ничего общего с установками. – Chris Johnson 9 November 2016 в 02:47

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

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
2
ответ дан Dadaso Zanzane 18 August 2018 в 20:00
поделиться

Существует более простой способ:

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`
57
ответ дан Daniel Lee 18 August 2018 в 20:00
поделиться
  • 1
    FYI, работает только если у вас установлен python2.7 на системном уровне (например, /usr/bin/python2.7) – kingb12 27 January 2017 в 21:23
  • 2
    Я смог сделать это с помощью virtualenv venv --python=python3.6 – Jordan 7 September 2017 в 18:03
  • 3
    Фактически вы можете отказаться от младшего номера версии. virtualenv env --python=python2 – Anshul 5 February 2018 в 07:56

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

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

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

mkvirtualenv -p $(which python2) <env_name>

5
ответ дан Gerard 18 August 2018 в 20:00
поделиться

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

$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
3
ответ дан Howe 18 August 2018 в 20:00
поделиться
  • 1
    Установите virtualenv на python3, если у вас его нет: python3 -m pip install virtualenv – Howe 3 July 2018 в 15:47

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

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

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

Python2 & raquo;

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 & raquo;

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$ 
2
ответ дан hygull 18 August 2018 в 20:00
поделиться

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

virtual 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   

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

165
ответ дан Ivan Klass 18 August 2018 в 20:00
поделиться
  • 1
    Не могли бы вы объяснить, почему это делается так: зачем устанавливать python локально? И что еще более важно зачем устанавливать virtualenv с помощью версии python, которую вы хотите использовать с ней ? – lajarre 8 October 2012 в 20:46
  • 2
    конечно. Если вы находитесь в виртуальной среде хостинга, а сервер предоставляет более старые версии python, которые вас не устраивают, - это был мой сценарий. Также, если вам приходится разрабатывать проекты на разных серверах, и вы хотите реплицировать эти среды на своем локальном компьютере ... Virtualenv создает жесткие ссылки на библиотеки python. так что это действительно важно с версией python, которую вы используете для установки и создания Virtualenv. – zzart 11 October 2012 в 21:15
  • 3
    Или, если вы похожи на меня, и я на запертой машине при работе без привилегий sudo. Локальные копии библиотек, баз данных SQL, языков и компиляторов в изобилии! Благодаря! – zachd1_618 24 January 2013 в 20:03
  • 4
    В virtualenv 1.9.1 мне пришлось использовать ~/.localpython/bin/virtualenv вместо просто virtualenv для завершения установки без ошибок. Кроме того, используйте source ve/bin/activate вместо source activate. – Saul 10 April 2013 в 08:40
  • 5
    Еще одна причина сделать это - попробовать бета-версии, прежде чем они станут основными, чтобы убедиться, что ваши проекты и их зависимости все еще работают, не рискуя нарушить управление пакетами, сбив что-то и оставляя оборванные файлы повсюду. Мне нравится этот ответ. – RobotHumans 29 December 2013 в 16:02
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
90
ответ дан Jan 18 August 2018 в 20:00
поделиться
  • 1
    См. Мой ответ ниже для эквивалентного решения с использованием переменных среды. Этот подход означает, что вам не нужно забывать использовать -p. – Chris Johnson 5 August 2016 в 20:58
  • 2
    Разве нет решений, которые переключаются между версиями python, не требуя создания новой виртуальной среды? – Charlie Parker 28 August 2016 в 22:27
  • 3
    Будет ли это работать, если вы хотите установить версию python, которая не установлена ​​в вашей системе? Скажите, что вы хотите проверить python3.6, но не хотите прикасаться к python3.5, установленному на вашем компьютере? – alpha_989 31 July 2018 в 03:53

В окнах:

py -3.4x32 -m venv venv34

или

py -2.6.2 -m venv venv26

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

1
ответ дан jnnnnn 18 August 2018 в 20:00
поделиться

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

  1. Создать среду для python3:
    virtualenv --python=/usr/bin/python3 env
    
  2. Активировать ее:
    source env/bin/activate
    
4
ответ дан Marcin Rapacz 18 August 2018 в 20:00
поделиться

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

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

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

15
ответ дан matsjoyce 18 August 2018 в 20:00
поделиться
  • 1
    См. Мой ответ ниже для эквивалентного решения с использованием переменных среды. Этот подход означает, что вам не нужно забывать использовать -p. – Chris Johnson 5 August 2016 в 20:58

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

python3 -m venv <myenvname>

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

pyvenv /path/to/new/virtual/environment

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

135
ответ дан mc_kaiser 18 August 2018 в 20:00
поделиться
  • 1
    Рад, что вы указали это, ему нужно больше поощрения. Один незначительный nit: теперь они выступают за его запуск как python3 -m venv <envname>, чтобы предотвратить необходимость создания скриптов для всех. – Paul Everitt 20 November 2016 в 17:08
  • 2
    На самом деле сценарий pyvenv является устаревшим в Python 3.6+, хотя основной модуль venv сам по себе не является. Поэтому используйте python 3 -m venv <myenvname>, как говорит @PaulEveritt. – RichVel 20 December 2016 в 09:47
  • 3
    Будьте внимательны, чтобы pyvenv или python3 -m venv ... НЕ устанавливали сценарий python-config. Это означает, что даже после активации среды Python3 общесистемный python-config будет вызван с запутанными последствиями. См. Этот отчет об ошибке от 2011 года github.com/pypa/virtualenv/issues/169 и мой вопрос stackoverflow.com/questions/42020937/… – Laryx Decidua 23 February 2018 в 12:16

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

10
ответ дан Nima Soroush 18 August 2018 в 20:00
поделиться
  • 1
    Я получил эту ошибку при запуске первой команды / usr / local / bin / python3: Нет модуля с именем virtualenv – tanvi 23 May 2016 в 13:48
  • 2
    @tanvi: сначала нужно установить virtualenv в свой python3. Сначала запустить pip3 install virtualenv – Nima Soroush 23 May 2016 в 14:30

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

virtualenv -p python2 myenv (для python2)

virtualenv -p python3 myenv (для python3)

2
ответ дан Sachin Kolige 18 August 2018 в 20:00
поделиться

На mac я использую pyenv и virtualenvwrapper. Мне пришлось создать новый virtualenv. Вам нужен доморощенный, который, как я полагаю, вы установили, если вы на 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
6
ответ дан silverdagger 18 August 2018 в 20:00
поделиться
  • 1
    Команда должна быть mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name} версиями, а не версией. Если бы SO разрешило короткие изменения, я бы это исправил. – Martin Burch 4 September 2015 в 04:30
  • 2
    pyenv включает поддержку virtualenv через плагин pyenv-virtualenv, поэтому я считаю, что мне действительно не нужен virtualenvwrapper. Подробнее в my pyenv answer . – RichVel 7 May 2017 в 07:26
Другие вопросы по тегам:

Похожие вопросы: