12

Я установил python3-virtualenv на Lubuntu 15.1 с помощью официального пакета Ubuntu apt-get install python3-virtualenv . Официальная документация указывает, что это просто virtualenv . в моем каталоге проекта должно быть достаточно для создания venv. Это ничего не делает, потому which virtualenv ничего не делает. (Ничего из того, which python-virtualenv и which python3-virtualenv тоже).

После установки информации о пакете сказано, что он установил /usr/lib/python3/dist-packages/virtualenv.py , поэтому я вызываю его в python3. Это дает мне это:

$ python3 /usr/lib/python3/dist-packages/virtualenv.py .
Running virtualenv with interpreter /usr/bin/python2
New python executable in ./bin/python2
Also creating executable in ./bin/python
Installing setuptools, pip...done.

Да, когда я смотрю, все в ./bin это python2. Является ли Python3-virtualenv из Ubuntu фиктивным пакетом для Python2?

Официальная документация по Python гласит: используйте другой пакет: python3-venv. Это похоже на работу, когда я pyvenv . , с содержимым python3 в каталоге ./bin .

Как я могу успешно создать Python 3 virtualenv?

1 ответ1

20

venv - это удобный сценарий для создания виртуальных envs, но он не полностью заменяет все, что может сделать virtualenv . Использование любого из них подходит для большинства случаев. virtualenv не устарел.

python3 -m venv работает после установки python3-venv потому что Debian удаляет некоторые скрипты из базового пакета Python. python3-virtualenv по какой-то причине не помещает скрипт virtualenv на ваш путь, но это делает python-virtualenv , и он будет отлично работать для любой версии.

Неважно, для какой версии virtualenv установлена, она может создавать envs для любой установленной версии, передавая -p pythonX (где X - версия). venv , будучи более простым, будет создавать только envs той версии, из которой он запущен, и доступен только с версии 3.3.

$ sudo apt-get install python-virtualenv
$ virtualenv -p python3 env
$ source ./env/bin/activate
$ sudo apt-get install python3-venv
$ python3 -m venv env
$ source ./env/bin/activate

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .