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

Cosa sta succedendo qui? è python-virtualenv == pyvenv? Non è ancora rotto? Virtualenv originale funziona ancora con Python? se venv (troppe variazioni di nomi !!!) fa parte della libreria standard, https://docs.python.org/3/library/venv.html , perché mi viene detto di installarlo?

E quando ho provato a installarlo, ho ottenuto:

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

A quel punto ho interrotto, perché l'installazione di python3-pip poco prima mi aveva dato

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

E non ero sicuro se i pacchetti extra li sovrascrivessero o andassero su Python 2.7.

Ho letto che Python 3 dovrebbe essere il default in futuro. Dal momento che sono presenti sia la 2.7 che la 3.4 e hanno comandi separati, come posso assicurarmi non solo che Python 3 sia il mio valore predefinito, ma che tutto ciò che installo vada lì e venga usato da esso invece della 2.7?

A proposito, ho provato sudo apt-get python3-virtualenv e ho ottenuto: E: Impossibile trovare il pacchetto python3-virtualenv


1
Mi piacerebbe ancora sapere qual è la differenza, se presente, tra tutti questi pacchetti di ambiente virtuale diversi ma con nomi simili.
Malik A. Rumi,

Sto usando 14.04, quindi questa risposta mi ha aiutato.
FriendFX,

Risposte:


4

Il modo per installare i pacchetti Python 3.x in un ambiente virtuale Python è creare l'ambiente virtuale Python usando il creatore di ambiente virtuale Python 3 ( python3-virtualenv ). python3-virtualenv si trova nei repository Ubuntu predefiniti in Ubuntu 14.10 e versioni successive.

Installa i pacchetti Python 3.x in un ambiente virtuale Python in 16.04 e versioni successive

  1. Installa il creatore di ambiente virtuale Python 3

    sudo apt install virtualenv python3-virtualenv
  2. Crea un ambiente virtuale Python per python3. È possibile installare solo pacchetti python3 all'interno di questo ambiente virtuale Python. Se si desidera installare anche pacchetti Python 2.x, è necessario creare un altro ambiente virtuale Python.

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

    Il nuovo ambiente virtuale Python per python3 verrà creato nella envdirectory che si trova nella directory corrente.

  3. Installa i pacchetti Python.

    cd / path / to / env / # env è la directory dell'ambiente virtuale python3
    bin sorgente / attiva
    pip3 installa first-package-name next-package-name last-package-name

Questo è un nuovo ambiente virtuale python3 con l'ultima versione di pip3, quindi l'installazione dei pacchetti Python funzionerà alla grande.


Installa i pacchetti Python 3.x in un ambiente virtuale Python in Ubuntu 14.04

sudo apt-get install virtualenvwrapper  
gedit .bashrc

Aggiungi la seguente riga alla fine di .bashrc.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Salvare le modifiche in .bashrc e chiudere gedit. Trova il tuo .bashrc per rendere effettive le modifiche.

cd 
source .bashrc

Crea un ambiente virtuale Python per python3. È possibile installare solo pacchetti python3 all'interno di questo ambiente virtuale Python. Se si desidera installare anche pacchetti Python 2.x, è necessario creare un altro ambiente virtuale Python.

mkvirtualenv py3 -p /usr/bin/python3

Il nuovo ambiente virtuale Python per python3 verrà creato nella ~/.virtualenvs/py3directory. .virtualenvsè una cartella nascosta.

Installa un pacchetto.

cd ~ / .virtualenvs / py3
bin sorgente / attiva
pip3 installa nome-pacchetto

4
Questo non sembra essere corretto. Vivido (15.04) ha python3-virtualenve python3-venvpacchetti disponibili. Suppongo python3-venvsia il pacchetto corretto, nel qual caso non ho idea dello scopo python3-virtualenv.
Knite,

Non corretto. Puoi usare virtualenv(eseguibile) per creare un ambiente con interprete arbitrario, incluso PyPy, per esempio virtualenv -p python3 newenv.
saaj,

0

Bene, diventa complicato. Quanto segue è mostrato contro Ubuntu Xenial (che è la versione sottostante per Linux Mint che uso). Risolviamolo:

pyvenv

Si riferisce allo script wrapper del pacchetto stdlib Python 3.3+ . Ma è stato deprecato da Python 3.6.

È anche un pacchetto PyPi , che è un commutatore di ambiente virtuale.

venv

È il pacchetto stdlib Python 3.3+ con lo scopo di migliorare e sostituire il pacchetto virtualenv di PyPi (vedi PEP 405 ). Ma sembra che non sia ancora lì (almeno non come funzionalità completa).

python-virtualenv e virtualenv

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

Come puoi vedere, funziona su Python 3. Il python-virtualenvpacchetto è pensato per essere usato come python2 -m virtualenv py2. Vediamo come virtualenvfunziona su 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

Come puoi vedere anche se il virtualenvpacchetto sta usando python3-virtualenv, il suo valore predefinito è creare l'ambiente Python 2.


Ho anche notato la stessa cosa sulla mia macchina che stava eseguendo Ubuntu 14.04 al momento. - "Come puoi vedere anche se il pacchetto virtualenv utilizza python3-virtualenv, il suo valore predefinito è creare l'ambiente Python 2".
Karel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.