pyvenv vs venv vs python-virtualenv vs virtualenv und 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

Was geht hier vor sich? ist python-virtualenv == pyvenv? Ist das nicht noch kaputt? Funktioniert original virtualenv noch mit Python? Wenn venv (zu viele Namensvariationen !!!) Teil der Standardbibliothek ist, https://docs.python.org/3/library/venv.html , warum muss ich es installieren?

Und als ich versuchte, es zu installieren, bekam ich:

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

An welcher Stelle habe ich abgebrochen, weil mir die Installation von python3-pip kurz zuvor gegeben hatte

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

Und ich war mir nicht sicher, ob die zusätzlichen Pakete sie überschreiben oder auf Python 2.7 gehen würden.

Ich habe gelesen, dass Python 3 in Zukunft die Standardeinstellung sein soll. Da sowohl 2.7 als auch 3.4 vorhanden sind und separate Befehle haben, wie kann ich dann nicht nur sicherstellen, dass Python 3 meine Standardeinstellung ist, sondern dass alles, was ich installiere, dort abgelegt wird und von Python 3 anstelle von 2.7 verwendet wird?

Übrigens habe ich sudo apt-get python3-virtualenv ausprobiert und Folgendes erhalten: E: Das Paket python3-virtualenv konnte nicht gefunden werden

Malik A. Rumi
quelle
1
Ich würde immer noch gerne wissen, was der Unterschied - wenn überhaupt - zwischen all diesen verschiedenen, aber ähnlich benannten virtuellen Umgebungspaketen ist.
Malik A. Rumi
Ich verwende 14.04, daher hat mir diese Antwort geholfen.
FriendFX

Antworten:

4

Die Installation von Python 3.x-Paketen in einer virtuellen Python-Umgebung erfolgt durch Erstellen der virtuellen Python-Umgebung mit Python 3 Virtual Environment Creator ( python3-virtualenv ). python3-virtualenv ist in den Ubuntu-Standardrepositorys in Ubuntu 14.10 und höher enthalten.

Installieren Sie Python 3.x-Pakete in einer virtuellen Python-Umgebung ab 16.04

  1. Installieren Sie Python 3 Virtual Environment Creator

    sudo apt install virtualenv python3-virtualenv
  2. Erstellen Sie eine virtuelle Python-Umgebung für python3. Sie können nur Python3-Pakete in dieser virtuellen Python-Umgebung installieren. Wenn Sie auch Python 2.x-Pakete installieren möchten, müssen Sie eine andere virtuelle Python-Umgebung erstellen.

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

    Die neue virtuelle Python-Umgebung für python3 wird in dem envVerzeichnis erstellt, das sich im aktuellen Verzeichnis befindet.

  3. Installieren Sie Python-Pakete.

    cd / path / to / env / # env ist das Verzeichnis der virtuellen Umgebung von python3
    Quellbehälter / aktivieren
    pip3 install first-package-name next-package-name last-package-name

Dies ist eine neue virtuelle Python3-Umgebung mit der neuesten Version von pip3. Die Installation von Python-Paketen funktioniert also hervorragend.


Installieren Sie Python 3.x-Pakete in einer virtuellen Python-Umgebung in Ubuntu 14.04

sudo apt-get install virtualenvwrapper  
gedit .bashrc

Fügen Sie die folgende Zeile am Ende von .bashrc hinzu.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Speichern Sie die Änderungen an .bashrc und schließen Sie gedit. Beschreiben Sie Ihre .bashrc-Datei, damit die Änderungen wirksam werden.

cd 
source .bashrc

Erstellen Sie eine virtuelle Python-Umgebung für python3. Sie können nur Python3-Pakete in dieser virtuellen Python-Umgebung installieren. Wenn Sie auch Python 2.x-Pakete installieren möchten, müssen Sie eine andere virtuelle Python-Umgebung erstellen.

mkvirtualenv py3 -p /usr/bin/python3

Die neue virtuelle Python-Umgebung für python3 wird im ~/.virtualenvs/py3Verzeichnis erstellt. .virtualenvsist ein versteckter Ordner.

Installieren Sie ein Paket.

cd ~ / .virtualenvs / py3
Quellbehälter / aktivieren
pip3 install Paketname
karel
quelle
4
Das scheint nicht richtig zu sein. Vivid (15.04) hat python3-virtualenvund python3-venvPakete zur Verfügung. Ich gehe davon aus, dass python3-venves sich um das richtige Paket handelt. In diesem Fall habe ich keine Ahnung, wozu es python3-virtualenvdient.
stricken
Falsch. Sie können virtualenv(ausführbare Datei) verwenden, um eine Umgebung mit einem beliebigen Interpreter, einschließlich PyPy, zu erstellen virtualenv -p python3 newenv.
Saaj
0

Nun, es wird kompliziert. Das Folgende wird gegen Ubuntu Xenial (das zugrunde liegende Release für Linux Mint I) gezeigt. Lass es uns klären:

Pyvenv

Es bezieht sich auf das Wrapper-Skript des Python 3.3+ -Stdlib-Pakets . Aber es wurde seit Python 3.6 veraltet.

Es ist auch ein PyPi-Paket , bei dem es sich um einen Umschalter für virtuelle Umgebungen handelt.

venv

Es handelt sich um das stdlib-Paket für Python 3.3+ , dessen Zweck darin bestand, das virtuelle PyPi-Paket zu verbessern und zu ersetzen (siehe PEP 405 ). Aber es scheint, dass es noch nicht da ist (zumindest nicht so vollständig).

python-virtualenv und virtualenv

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

Wie Sie sehen, läuft es auf Python 3. python-virtualenvPaket soll wie verwendet werden python2 -m virtualenv py2. Mal sehen, wie es virtualenvmit frischem Ubuntu Xenial ( docker run --rm -it ubuntu:xenial) funktioniert :

$ 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

Wie Sie sehen können , wird standardmäßig eine Python 2-Umgebung erstellt, obwohl das virtualenvPaket verwendet wird python3-virtualenv.

saaj
quelle
Ich habe auch das Gleiche auf meinem Computer bemerkt, auf dem Ubuntu 14.04 ausgeführt wurde. - "Wie Sie sehen können, verwendet das virtualenv-Paket zwar python3-virtualenv, standardmäßig wird jedoch eine Python 2-Umgebung erstellt."
Karl