pyvenv vs venv vs python-virtualenv vs virtualenv и python 3

10
[email protected]:~$ pip install virtualenv
    Collecting virtualenv
    Downloading virtualenv-12.0.7-py2.py3-none-any.whl (1.8MB)
    100% |################################| 1.8MB 330kB/s 

[email protected]:~$ pip freeze
    (a lot of stuff, but not virtualenv)

[email protected]:~$ virtualenv testvenv1
    The program 'virtualenv' is currently not installed. You can install it by typing:
    sudo apt-get install python-virtualenv

Что здесь происходит? это python-virtualenv == pyvenv? Разве это еще не сломано? Ли по-прежнему работает virtualenv с python? если venv (слишком много вариаций имен !!!) является частью стандартной библиотеки, Ссылка , почему Мне сказали установить его?

И когда я попытался установить его, я получил:

[email protected]:~$ sudo apt-get install python-virtualenv
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following extra packages will be installed:
    python-colorama python-distlib python-html5lib python-pip python-setuptools

В какой момент я прервался, поскольку установка python3-pip перед тем, как это дало мне

Setting up python3-setuptools (3.3-1ubuntu1) ...
Setting up python3-pip (1.5.4-1) ...

И я не был уверен, что дополнительные пакеты будут перезаписывать их или перейти на python 2.7.

Я читал, что предполагается, что python 3 будет по умолчанию. Поскольку существуют как 2.7, так и 3.4, и имеют отдельные команды, как я могу не только убедиться, что Python 3 является моим значением по умолчанию, но что все, что я устанавливаю, идет туда и используется им вместо 2.7?

Кстати, я пробовал sudo apt-get python3-virtualenv и получил: E: Не удалось найти пакет python3-virtualenv

    
задан Malik A. Rumi 01.04.2015 в 11:07
источник

2 ответа

3

В репозиториях Ubuntu нет пакета python3-virtualenv. В репозиториях Ubuntu имеется пакет python-virtualenv, но этот пакет не будет работать для установки модулей Python 3.x в виртуальной среде Python. python-virtualenv работает только для установки модулей Python 2.x в виртуальной среде Python.

Способ установки модулей Python 3.x в виртуальной среде Python заключается в создании виртуальной среды Python с использованием создателя виртуальной среды Python 3 ( python3-virtualenv ). python3-virtualenv находится в репозиториях Ubuntu по умолчанию в Ubuntu 14.10 и далее.

Установка модулей Python 3.x в виртуальной среде Python в Ubuntu 14.04

sudo apt-get install virtualenvwrapper  
gedit .bashrc

Добавьте следующую строку в конец .bashrc.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Сохраните изменения в .bashrc и закройте gedit. Измените свой .bashrc, чтобы изменения вступили в силу.

cd 
source .bashrc

Создайте виртуальную среду Python для python3. Пакет python3 можно установить только в этой виртуальной среде Python. Если вы также хотите установить пакеты Python 2.x, вам нужно создать еще одну виртуальную среду Python.

mkvirtualenv py3 -p /usr/bin/python3

Новая виртуальная среда Python для python3 будет создана в каталоге ~/.virtualenvs/py3 . .virtualenvs - скрытая папка.

Установите пакет.

cd ~/.virtualenvs/py3
source bin/activate
pip3 install package-name
    
ответ дан karel 01.04.2015 в 11:13
0

Ну, это усложняется. Ниже показано против Ubuntu Xenial (который является основным выпуском для Linux Mint, который я использую). Давайте выясним:

pyvenv

Он ссылается на сценарий оболочки python 3.3+ stdlib . Но он был устаревшим с Python 3.6.

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

venv

Это Python 3.3+ пакет stdlib , целью которого было улучшить и заменить PyPi виртуальный пакет (см. PEP 405 ). Но, похоже, он еще не существует (по крайней мере, не как полнофункциональный).

python-virtualenv и virtualenv

$ apt-cache show virtualenv | grep Depends
Depends: python3, python3-virtualenv

Как вы можете видеть, он работает на Python 3. python-virtualenv пакет должен использоваться как python2 -m virtualenv py2 . Посмотрим, как virtualenv работает с новым Ubuntu Xenial ( docker run --rm -it ubuntu:xenial ):

$ virtualenv
bash: virtualenv: command not found
$ apt-get update
...
$ apt-get install --yes --no-install-recommends virtualenv
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  ca-certificates dh-python libexpat1 libmpdec2 libpython3-stdlib
  libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
  mime-support openssl python-pip-whl python3 python3-minimal
  python3-pkg-resources python3-virtualenv python3.5 python3.5-minimal
Suggested packages:
  libdpkg-perl python3-doc python3-tk python3-venv python3-setuptools
  python3.5-venv python3.5-doc binutils binfmt-support
Recommended packages:
  file
The following NEW packages will be installed:
  ca-certificates dh-python libexpat1 libmpdec2 libpython3-stdlib
  libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
  mime-support openssl python-pip-whl python3 python3-minimal
  python3-pkg-resources python3-virtualenv python3.5 python3.5-minimal
  virtualenv
...
$ virtualenv test
The executable python2 (from --python=python2) does not exist
$ virtualenv -p python3 py3 
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /py3/bin/python3
Also creating executable in /py3/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ . py3/bin/activate
(py3) $ python --version
Python 3.5.2
(py3) $ deactivate
$ apt-get install --yes --no-install-recommends python    
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libffi6 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib
  python-minimal python2.7 python2.7-minimal
Suggested packages:
  python-doc python-tk python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  libffi6 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python
  python-minimal python2.7 python2.7-minimal
...
$ virtualenv py2 
Running virtualenv with interpreter /usr/bin/python2
New python executable in /py2/bin/python2
Also creating executable in /py2/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ . py2/bin/activate
(py2) $ python --version
Python 2.7.12

Как вы видите, хотя virtualenv package использует python3-virtualenv , по умолчанию он должен создать среду Python 2.

    
ответ дан saaj 18.02.2017 в 14:04