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

avatar
Ulf
7 октября 2009 в 21:11
1091390
36
1325

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

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

Источник
bias
28 мая 2010 в 03:25
9

Просто упомяну, что вы также можете сделать это с помощью virtualenvwrapper.

naught101
1 сентября 2014 в 12:47
17

Стоит отметить, что в Python 3 есть встроенный эквивалент virtualenv: venv.

Charlie Parker
28 августа 2016 в 23:38
3

Невозможно переключить версию python в текущей среде без создания новой среды?

AnandShiva
26 декабря 2020 в 08:58
0

youtube.com/watch?v=N5vscPTWKOk Это видео, рекомендованное в документации по virtualenv, охватывает весь этап процесса.

Ответы (36)

avatar
Daniel Roseman
7 октября 2009 в 21:33
1753

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

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

Примечание. Для Python 3.3 или более поздней версии см. Ответ Аэлфинна ниже.

bias
28 мая 2010 в 03:24
167

Я подумал, что упомянул, что это работает и для virtualenvwrappers: mkvirtualenv -p python2.6 env

John C
24 мая 2011 в 14:31
80

Мне что-то здесь не хватает - разве для этого не требуется, чтобы в системе уже была установлена ​​версия 2.6? Я думал, что точка virtualenv заключается в том, что у меня может быть версия python, отличная от основной (в моем случае 2.4 на CentOS). Я предполагал, что могу установить virtualenv, , затем установить Python 2.6 под ним для пакетов в env, которые можно использовать?

Daniel Roseman
24 мая 2011 в 14:47
44

@ Джон, да, это так. Дело не в virtualenv: дело в том, чтобы создать изолированную среду для Python. Сначала вам нужно будет установить эту версию, но вы можете установить ее локально для своего пользователя.

ashwoods
1 декабря 2011 в 22:03
8

@JohnC Вы можете использовать python brew для установки альтернативного python.

Derek Morrison
19 мая 2013 в 00:38
1

@John C Да (на точку зрения Дэниела), похоже, что смысл virtualenv состоит в том, чтобы взять глобальный исполняемый файл Python и поддерживать отдельные наборы пакетов . Это отличается, скажем, от RVM Ruby, который предназначен для хранения отдельной версии Ruby, а также набора драгоценных камней в одной среде.

blaze
16 октября 2013 в 00:57
64

Если вы немного ленивы: virtualenv -p `which python2.6` <path/to/new/virtualenv>

DanH
26 марта 2015 в 09:51
1

pythonbrew больше не поддерживается, вместо этого используйте pyenv.

user1807271
12 января 2016 в 17:32
1

При использовании pip после установки duel вы должны указать, какой python pip использовать? (например, 'python2.7 -m pip install SomePackage # в частности Python 2.7') или будет пип в этом virtualenv автоматически знать, какой из них использовать?

Chris Johnson
5 августа 2016 в 20:37
2

Параметр -p / --python также работает с функциями virtualenvwrapper, например, mkproject.

Chris Johnson
5 августа 2016 в 20:58
0

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

Charlie Parker
28 августа 2016 в 22:27
4

Нет ли решений, которые переключаются между версиями Python без необходимости создавать новую виртуальную среду?

Michael
20 ноября 2016 в 15:30
1

virtualenv -p $ (который python3) <путь / к / новому / virtualenv />

Alex Punnen
14 ноября 2017 в 13:54
0

Если вы работаете в Ubuntu 16.04 или другом и получаете ошибки, см. Принятый ответ здесь - coderhelper.com/questions/37495375/… Он работает и не вредит ОС (обычно любое удаление python в ubuntu выполняется плохой)

Radek
1 августа 2018 в 18:17
0

Отлично, это работает, если вы хотите, чтобы всегда оставалась пивная версия, убедитесь, что вы используете путь "/ usr / local / bin / python", спасибо

user9826550
26 декабря 2018 в 01:01
0

если не уверен, то иди как virtualenv --python = which python3 venvdir # может быть существующим, даже если проект pycharm загружен в ide

m.a.d.cat
21 апреля 2019 в 06:20
0

Я хотел бы добавить virtualenv --no-site-packages --python=/usr/bin/python3.6 .

Gokul
5 августа 2019 в 13:18
0

используйте which python или which python3, чтобы найти путь к питону.

Rahul Bali
9 мая 2020 в 09:52
0

Это лучшее решение даже для Python 3 или новее.

Stefan
8 декабря 2020 в 19:48
0

Если вы очень ленивы, просто: </path/to/python/you/want/to/use> -m venv <path/to/new/virtualenv/>

mattsmith5
26 апреля 2021 в 01:20
0

это будет работать для Windows coderhelper.com/a/22793687/15435022

avatar
Leigh Mathieson
30 июля 2021 в 10:03
0

В Linux Ubuntu 21.04 (в настоящее время Python 3.9.5) мне нужно было получить виртуальную версию Python 3.7.8. Полные шаги для начала работы:

Найдите нужный источник версии Python, например 3.7.8 здесь: https://www.python.org/downloads/release/python-378/

Загрузите архив с исходным кодом Gzip

Разархивируйте его с помощью tar zxvf Python-3.7.8.tgz (при необходимости измените номер своей версии, если он отличается от 3.7.8)

Скопируйте распакованную папку в / usr / bin с помощью: sudo cp -r Python-3.7.8 /usr/bin

cd /usr/bin/Python-3.7.8/

Проверьте содержимое, если вы хотите увидеть то, что у вас есть: ls

sudo time ./configure
sudo time make
time sudo make install
time make clean

Проверьте, как настроен ваш Python, и создайте отчеты:

which python
python --version

Все должно быть связано с вашей основной установкой (Python 3.9.5 для меня)

Чтобы проверить новую установку:

which python 3.7
python3.7 --version

Все должно быть связано с вашей установкой 3.7.8

Если вы хотите запустить его для проверки, выполните:

python3.7
exit()

Установить venv:

sudo apt install venv

Чтобы создать venv (возможно, в вашем репо, если это так, добавьте .venv в .gitignore):

python3.7 -m venv .venv

Чтобы активировать Venv:

source .venv/bin/activate

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

python --version
avatar
mattsmith5
26 апреля 2021 в 01:19
1

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

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

py -3.4 -m venv c:\path\to\wherever\you\want\it
avatar
CrmXao
20 января 2021 в 22:04
5

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

С virtualenv,

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

с venv

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

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

Chandan
3 февраля 2021 в 06:45
0

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

CrmXao
3 февраля 2021 в 11:23
0

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

Chandan
3 февраля 2021 в 12:15
0

да, он работает, как вы сказали, но мне нужна другая версия, значит на моем компьютере установлен python3.9, но мне нужно создать виртуальный env для python3.6.

CrmXao
3 февраля 2021 в 17:04
0

хорошо, просто напишите python3.6 вместо 3.8 ..

Lyle
7 апреля 2021 в 05:56
1

Это самый простой и лучший ответ, охватывающий большинство случаев.

avatar
AlphaSeekness
21 декабря 2020 в 00:25
3

Это сработало для моего использования в 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

avatar
Bluu
1 декабря 2020 в 11:56
2

Конец 2020 года:

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

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

Установка:

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

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

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

avatar
sparker
30 ноября 2020 в 15:37
1

Удивлен, что до сих пор никто не упомянул 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

avatar
Aminah Nuraini
15 ноября 2020 в 16:00
1

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

virtualenv -p=C:\Python27\python2.exe <envname>
avatar
PetarMI
13 мая 2020 в 13:25
4

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

python=python3.6

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

virtualenv venv --python=pythonX.X
avatar
Cole Smith
7 марта 2020 в 19:31
4

Они кажутся слишком сложными для 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 и активирует ее. Никаких путей или других сложных вещей не требуется.

sinoroc
8 марта 2020 в 11:13
0

Разве вместо этого не должно быть py -3.7 -m venv env (-m отсутствует)?

Cole Smith
9 апреля 2020 в 19:32
0

Ага, исправлено в посте !.

MacGyver
24 марта 2021 в 17:52
0

Запускать py опасно, потому что он может запускать Python в другом каталоге, если он настроен. Лучше всего находиться в правильном каталоге Python с python.exe и вместо этого использовать ключевое слово python.

avatar
Victoria Stuart
20 ноября 2019 в 22:50
22

[ноябрь 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/

до

/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, стандартной библиотеки и различных вспомогательных файлов. ...


Создайте Venv Python 3.7 [в операционной среде / системе 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'

Test 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] 
>>>
Robbie Capps
18 декабря 2019 в 00:53
1

Это чрезвычайно подробный ответ! :) Я сталкиваюсь с этой проблемой каждый раз, когда мне нужно что-то перенести из Arch Linux в любую другую (например, Debian-ish) систему.

daddyodevil
1 февраля 2020 в 18:17
1

@ Виктория Стюарт, большое спасибо. Это именно то, что я искал.

oseiskar
1 июля 2020 в 12:30
1

Вот хорошие пошаговые инструкции по установке 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

avatar
Simon P
22 октября 2019 в 03:42
1

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
avatar
TanuAD
10 сентября 2019 в 02:39
1

Вот пошаговый шаг по созданию виртуальной среды в папке Visual Studio Code: Я использовал Powershell (режим администратора):
1. Я создаю папку VSCode - «D: \ Code_Python_VE», в которой я хочу создать виртуальную среду.
2. Затем я набираю команду - «pip3 install virtualenv». (D: \ Code_Python_VE> pip3 установить 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>. Это запустит Visual Studio 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
    Надеюсь, это поможет.
avatar
brandonbanks
16 августа 2019 в 16:37
4

Я использую 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
Bluu
1 декабря 2020 в 11:01
1

Как упоминалось в комментарии к другому ответу: еще проще использовать предоставленный pyenv-virtualenv с pyenv (cf realpython.com/intro-to-pyenv/#virtual-environments-and-pyenv)

avatar
Nitin Nath Giri
18 июля 2019 в 05:24
1

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

virtualenv / home / payroll / Documents / env -p / usr / bin / python3

avatar
user11118940
19 июня 2019 в 10:14
1

У меня это сработало в Windows с установкой python 2:

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

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

avatar
Mohit
4 апреля 2019 в 09:19
2

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

pip install --upgrade virtualenv

avatar
David Golembiowski
23 февраля 2019 в 21:45
1

Для систем 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, если они уже доступны в вашей системе.

avatar
Sachin Kolige
5 июля 2018 в 10:03
23

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

virtualenv -p python2 myenv (для python2)

virtualenv -p python3 myenv (для python3)

Yash Sharma
28 декабря 2018 в 02:05
1

Флаг -p python2 работает аналогично поиску / usr / bin / python2. Используйте: virtualenv -p python2.7 myenv для 2.7 и т. Д.

avatar
Aseem
3 июля 2018 в 08:51
2
virtualenv -p python3 myenv

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

avatar
Zihao Zhao
24 апреля 2018 в 00:30
7

Для 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
Zihao Zhao
3 июля 2018 в 15:47
1

Установите virtualenv на python3, если у вас его нет: python3 -m pip install virtualenv

avatar
jnnnnn
17 апреля 2018 в 23:22
4

В Windows:

py -3.4x32 -m venv venv34

или

py -2.6.2 -m venv venv26

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

avatar
hygull
16 декабря 2017 в 08:17
3

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

.

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

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

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$ 

avatar
Marcin Rapacz
26 мая 2017 в 11:45
4

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

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

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

    source env/bin/activate
    
avatar
Daniel Lee
1 ноября 2016 в 11:59
131

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

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`
kingb12
27 января 2017 в 20:23
1

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

Jordan
7 сентября 2017 в 18:03
0

Я также смог сделать это с virtualenv venv --python=python3.6

Anshul
5 февраля 2018 в 06:56
0

Фактически вы можете отказаться от младшего номера версии. virtualenv env --python=python2

user1767754
20 ноября 2018 в 19:54
0

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

abautista
16 июля 2019 в 17:23
0

В Windows это сработало как шарм с небольшой поправкой: virtualenv venv --python=<insert_your_python_version_here>, где <insert_your_python_version_here> было в моем случае C:\Python\Python368\python.exe

Rohan Devaki
29 декабря 2020 в 11:19
0

Спасибо, эта команда virtualenv venv --python=python3.8 сработала, но для этого нам нужно загрузить и python3.8, верно? Теперь у меня есть python3.9 и python3.8, поэтому я задаю этот вопрос ..

Manoj D Bhat
20 января 2021 в 15:31
0

В Windows вы можете использовать where python вместо which python

avatar
The Aelfinn
26 сентября 2016 в 22:46
410

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

python3 -m venv <myenvname>

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


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

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

pyvenv /path/to/new/virtual/environment

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

Paul Everitt
20 ноября 2016 в 16:08
12

Рад, что вы указали на это, он нуждается в дополнительном продвижении. Один небольшой нюанс: теперь они рекомендуют использовать его как python3 -m venv <envname>, чтобы избежать нужды в скриптах-заглушках для всего.

RichVel
20 декабря 2016 в 08:47
7

На самом деле скрипт pyvenv устарел в Python 3.6+, хотя сам базовый модуль venv - нет. Так что используйте python 3 -m venv <myenvname>, как говорит @PaulEveritt.

Laryx Decidua
23 февраля 2018 в 11:16
5

Имейте в виду, что pyvenv или python3 -m venv ... НЕ устанавливают сценарий python-config. Это означает, что даже после активации вашей среды Python3 общесистемный python-config будет вызываться с запутанными последствиями. См. Этот отчет об ошибке от 2011 github.com/pypa/virtualenv/issues/169 и мой вопрос coderhelper.com/questions/42020937/…

Dominick Pastore
29 мая 2019 в 16:04
1

«Обратите внимание, что venv не позволяет создавать virtualenv с другими версиями Python». - Ты уверен, что это правда? Мне кажется, что это отлично сработает, если я создам его с определенной версией Python, например. python3.5 -m venv <myenvname> (при условии, что у меня доступна эта версия Python).

tanius
21 октября 2019 в 21:35
19

Подтверждение того, что наблюдение @ Nick работает: способ создать venv с определенной версией Python - использовать эту версию при настройке. Например: python3.5 -m venv venv

cowlinator
12 мая 2020 в 20:22
2

По-прежнему можно использовать другую версию Python с venv. Вместо предоставления аргумента, как в случае с virtualenv, вы просто убедитесь, что используете соответствующую версию Python для запуска venv. Пример с py средством запуска python: py -3.3 -m venv my_venv создаст виртуальную среду с использованием python 3.3.

BenjaminK
6 мая 2021 в 07:49
0

Что означает "-m"?

Jabro
23 июля 2021 в 10:47
0

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

AlxVallejo
8 августа 2021 в 23:27
0

@tanius Итак, если вам нужно переключить версии после создания venv, вам нужно удалить существующий venv?

avatar
Gerard
19 сентября 2016 в 13:28
8

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

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

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

mkvirtualenv -p $(which python2) <env_name>

avatar
Chris Johnson
5 августа 2016 в 20:57
13

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

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

export VIRTUALENV_PYTHON=/path/to/desired/version

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

YPCrumble
8 ноября 2016 в 22:37
0

Это прекрасно сработало. Любая идея, почему установка export VIRTUALENVWRAPPER_PYTHON=/path/to/desired/version для virtualenvwrapper docs не сработала, но это решение сработало?

Chris Johnson
9 ноября 2016 в 01:47
0

Этот env var управляет тем, что Python virtualenvwrapper использует при запуске и не имеет ничего общего с установками.

nedblorf
10 апреля 2019 в 15:29
0

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

avatar
Dadaso Zanzane
3 июня 2016 в 06:53
2

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

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
avatar
Nima Soroush
12 декабря 2015 в 23:11
16

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

python3 -m virtualenv venv

Или, как вариант, напрямую укажите на свой виртуальный путь. например для 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, установленную в виртуальной среде

tanvi
23 мая 2016 в 13:48
0

Я получил эту ошибку при запуске первой команды / usr / local / bin / python3: Нет модуля с именем virtualenv

Nima Soroush
23 мая 2016 в 14:30
2

@tanvi: сначала вам нужно установить virtualenv на ваш python3. Сначала запустите pip3 install virtualenv

avatar
silverdagger
2 сентября 2015 в 22:04
9

На 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
Martin Burch
4 сентября 2015 в 04:30
0

Команда должна иметь mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name} версии, а не версии. Если бы SO допускала короткие правки, я бы это исправил.

RichVel
7 мая 2017 в 07:26
0

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

Bluu
1 декабря 2020 в 10:59
0

Я определенно согласен с @RichVel, использование предоставленного pyenv-virtualenv с pyenv - это самый бесполезный опыт, который мы могли бы пожелать! (см. realpython.com/intro-to-pyenv/#virtual-environments-and-pyenv)

avatar
7stud
15 января 2015 в 20:43
40

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/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://coderhelper.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. Это позволяет хранить все ваши среды в одном месте.

Sankalp
16 марта 2018 в 02:36
0

which pip не сообщает мне версию Python. Это дает мне это- /usr/local/bin/pip.

7stud
16 марта 2018 в 02:44
0

@Sankalp, если вы перейдете к /usr/local/bin и сделаете $ ls -al pip, вы должны увидеть что-то вроде: pip -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip

Jim Factor
24 января 2019 в 05:13
0

Уже несколько отмечалось в ответе, но mkproject - это команда, которую нужно использовать, если вы хотите, чтобы она создавала как каталог проекта, так и виртуальную среду данной версии Python. mkproject -p /usr/bin/python3.6 myNewPython36Project

kd12345
24 марта 2021 в 07:39
0

@ 7stud, когда я перехожу к /usr/local/bin и делаю ls -al pip, я получаю это -rwxr-xr-x 1 root admin 266 23 Mar 09:40 pip

7stud
24 марта 2021 в 15:10
0

@ kd12345, Тогда, возможно, не полагайтесь на значение по умолчанию и укажите версию Python, которую вы хотите использовать с virtualenv -p.

kd12345
25 марта 2021 в 04:40
0

@ 7stud, когда я запускаю which -a python3, я получаю /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 /usr/local/bin/python3 /usr/bin/python3 в таком порядке, что это значит?

7stud
25 марта 2021 в 23:36
0

@ kd12345, which -a перечисляет все исполняемые файлы в вашей переменной среды PATH, а не только первый найденный, которые соответствуют python3. Если вы сделаете ls -al /usr/local/bin/python3, вы, вероятно, увидите, что /usr/local/bin/python3 - это ссылка на /Library/Frameworks/Python.framework/Versions/3.8/bin/python3

7stud
25 марта 2021 в 23:42
0

@ kd12345, исполняемый файл /usr/bin/python3 может быть питоном, установленным в вашей системе.

kd12345
28 марта 2021 в 13:27
0

@ 7stud какая разница, какую выбрать?

avatar
kmario23
30 декабря 2013 в 05:51
25

Предположим, что в вашем 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 в оболочке, чтобы проверить, обновлена ​​ли ваша версия.

Chris Johnson
5 августа 2016 в 20:58
0

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

avatar
zzart
2 июля 2012 в 22:17
197

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

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

lajarre
8 октября 2012 в 19:46
2

Не могли бы вы пояснить, почему это нужно делать именно так: зачем устанавливать python локально? И, что более важно, зачем устанавливать virtualenv, используя версию Python, которую вы хотите использовать с ним ?

zzart
11 октября 2012 в 20:15
16

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

zachd1_618
24 января 2013 в 18:03
7

Или, если вы похожи на меня и работаете на заблокированной машине без прав sudo. Локальные копии библиотек, баз данных SQL, языков и компиляторов в изобилии! Спасибо!

Saul
10 апреля 2013 в 07:40
5

В virtualenv 1.9.1 мне пришлось использовать ~/.localpython/bin/virtualenv вместо только virtualenv, чтобы установка прошла без ошибок. Кроме того, используйте source ve/bin/activate вместо source activate.

RobotHumans
29 декабря 2013 в 14:02
3

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

snuggles
4 июня 2015 в 16:12
0

строка tar -zxvf Python-2.7.2.tar.gz должна быть tar -zxvf Python-2.7.2.tgz

Joe D'Andrea
11 февраля 2016 в 21:08
0

Хороший ответ! Могут быть и другие пакеты, которые необходимо установить (для поддержки определенных «битов», поскольку питон их вызывает). Я обнаружил, что на этой странице есть хороший список большинства, если не всех, из них: renoirboulanger.com/blog/2015/04/…

RichVel
7 мая 2017 в 07:25
0

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

Surya prakash Patel
11 августа 2018 в 01:56
1

@zzart Я использовал ./configure --prefix=$HOME/.localpython , но получил configure: error: in `/home/education/public_html/Python-3.5.2 ': configure: error: в $ PATH не найден приемлемый компилятор C

avatar
balazs
31 июля 2011 в 21:04
73

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

avatar
iElectric
4 ноября 2009 в 15:15
111
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
Chris Johnson
5 августа 2016 в 20:58
2

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

Charlie Parker
28 августа 2016 в 22:27
5

Нет ли решений, которые переключаются между версиями Python без необходимости создавать новую виртуальную среду?

alpha_989
31 июля 2018 в 03:53
3

Будет ли это работать, если вы хотите установить версию Python, которая не установлена ​​в вашей системе? Допустим, вы хотите протестировать python3.6, но не хотите прикасаться к python3.5, установленному на вашем компьютере?

Daniil Mashkin
28 ноября 2019 в 11:23
1

@ alpha_989, ты найдешь для этого решение?