pyvenv vs venv vs python-virtualenv vs virtualenv та python 3


13
malikarumi@Tetouan2:~$ pip install virtualenv
    Collecting virtualenv
    Downloading virtualenv-12.0.7-py2.py3-none-any.whl (1.8MB)
    100% |################################| 1.8MB 330kB/s 

malikarumi@Tetouan2:~$ pip freeze
    (a lot of stuff, but not virtualenv)

malikarumi@Tetouan2:~$ 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 (занадто багато варіацій імен !!!) є частиною стандартної бібліотеки, https://docs.python.org/3/library/venv.html , чому мені кажуть встановити його?

І коли я намагався його встановити, я отримав:

malikarumi@Tetouan2:~$ 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


1
Я все ще хотів би знати, яка різниця - якщо така є - між усіма цими різними, але подібними назвами пакетами віртуального середовища.
Малик А. Румі

Я використовую 14.04, тому ця відповідь мені допомогла.
FriendFX

Відповіді:


4

Спосіб встановлення пакетів Python 3.x у віртуальному середовищі Python полягає у створенні віртуальної середовища Python за допомогою творця віртуальної середовища Python 3 ( python3-virtualenv ). python3-virtualenv знаходиться у сховищах Ubuntu за замовчуванням у Ubuntu 14.10 та пізніших версіях.

Встановіть пакети Python 3.x у віртуальне середовище Python 16.04 та пізніших версій

  1. Встановіть розробник віртуальної середовища Python 3

    sudo apt install virtualenv python3-virtualenv
  2. Створіть віртуальне середовище Python для python3. Ви можете встановити пакети python3 всередині цього віртуального середовища Python. Якщо ви також хочете встановити пакети Python 2.x, тоді вам потрібно зробити ще одне віртуальне середовище Python.

    virtualenv -p python3 env  
    source ./env/bin/activate
    

    Нове віртуальне середовище Python для python3 буде створено в envкаталозі, який знаходиться в поточному каталозі.

  3. Встановіть пакети Python.

    cd / path / to / env / # env - це каталог віртуального середовища python3
    вихідний контейнер / активація
    pip3 встановити ім'я першого пакета ім'я наступного пакета прізвище прізвище пакета

Це нове віртуальне середовище python3 з останньою версією pip3, тому встановлення в нього пакетів Python буде чудово працювати.


Встановіть пакети 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
вихідний контейнер / активація
pip3 встановити ім'я пакета

4
Це не здається правильним. У Vivid (15.04) є python3-virtualenvі python3-venvпакети. Я припускаю, що python3-venvце правильний пакет, і в такому випадку я поняття не маю, якій цілі python3-virtualenvслужить.
knite

Неправильно. Ви можете використовувати virtualenv(виконується) для створення середовища з довільним інтерпретатором, включаючи PyPy, просто відмінним Напр virtualenv -p python3 newenv.
саай

0

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

півенв

Він відноситься до сценарію обгортки пакету stdlib Python 3.3+ . Але це було застаріло ще з Python 3.6.

Це також пакет PyPi , який є комутатором віртуального середовища.

Венв

Це пакет stdlib Python 3.3+ , метою якого було вдосконалення та заміна пакету PyPi virtualenv (див. 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пакет використовується python3-virtualenv, його типовим є створення середовища Python 2.


Я також помітив те саме на моїй машині, яка на той час працювала на Ubuntu 14.04. - "Як ви бачите, навіть якщо пакет virtualenv використовує python3-virtualenv, його замовчуванням є створення середовища Python 2."
карел
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.