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

Co tu się dzieje? jest python-virtualenv == pyvenv? Czy to jeszcze nie jest zepsute? Czy oryginalny virtualenv nadal działa z pythonem? jeśli venv (zbyt wiele odmian nazw !!!) jest częścią standardowej biblioteki, https://docs.python.org/3/library/venv.html , dlaczego kazano mi ją zainstalować?

A kiedy próbowałem go zainstalować, otrzymałem:

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

W tym momencie przerwałam, ponieważ dało mi to zainstalowanie python3-pip tuż przed tym

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

I nie byłem pewien, czy dodatkowe pakiety je zastąpią, czy przejdą na Python 2.7.

Czytałem, że Python 3 powinien być domyślnym programem do przodu. Ponieważ zarówno wersja 2.7, jak i 3.4 mają osobne polecenia, w jaki sposób mogę nie tylko upewnić się, że Python 3 jest moim domyślnym, ale że wszystko, co instaluję, jest dostępne i jest używane przez niego zamiast wersji 2.7?

BTW, próbowałem sudo apt-get python3-virtualenv i dostałem: E: Nie można znaleźć pakietu python3-virtualenv


1
Wciąż chciałbym wiedzieć, jaka jest różnica - jeśli w ogóle - między tymi wszystkimi różnymi, ale podobnie nazwanymi pakietami środowiska wirtualnego.
Malik A. Rumi

Używam 14.04, więc ta odpowiedź pomogła mi.
FriendFX,

Odpowiedzi:


4

Aby zainstalować pakiety Python 3.x w środowisku wirtualnym Python, należy utworzyć środowisko wirtualne Python za pomocą kreatora środowiska wirtualnego Python 3 ( python3-virtualenv ). python3-virtualenv znajduje się w domyślnych repozytoriach Ubuntu w Ubuntu 14.10 i nowszych.

Zainstaluj pakiety Python 3.x w środowisku wirtualnym Python w wersji 16.04 i nowszej

  1. Zainstaluj kreatora środowiska wirtualnego Python 3

    sudo apt install virtualenv python3-virtualenv
  2. Utwórz wirtualne środowisko Python dla Python3. Pakiety python3 można instalować tylko w tym środowisku wirtualnym Python. Jeśli chcesz również zainstalować pakiety Python 2.x, musisz utworzyć inne środowisko wirtualne Python.

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

    Nowe środowisko wirtualne Python dla Python3 zostanie utworzone w envkatalogu znajdującym się w bieżącym katalogu.

  3. Zainstaluj pakiety Python.

    cd / path / to / env / # env to katalog środowiska wirtualnego python3
    bin źródłowy / aktywuj
    pip3 zainstaluj pierwszą nazwę pakietu następną nazwę pakietu ostatnią nazwę pakietu

Jest to nowe środowisko wirtualne Python3 z najnowszą wersją pip3, więc instalowanie w nim pakietów Python będzie działało świetnie.


Zainstaluj pakiety Python 3.x w środowisku wirtualnym Python w Ubuntu 14.04

sudo apt-get install virtualenvwrapper  
gedit .bashrc

Dodaj następujący wiersz na końcu .bashrc.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Zapisz zmiany w .bashrc i zamknij gedit. Źródło .bashrc, aby zmiany odniosły skutek.

cd 
source .bashrc

Utwórz wirtualne środowisko Python dla Python3. Pakiety python3 można instalować tylko w tym środowisku wirtualnym Python. Jeśli chcesz również zainstalować pakiety Python 2.x, musisz utworzyć inne środowisko wirtualne Python.

mkvirtualenv py3 -p /usr/bin/python3

Nowe środowisko wirtualne Python dla Python3 zostanie utworzone w ~/.virtualenvs/py3katalogu. .virtualenvsjest ukrytym folderem.

Zainstaluj pakiet.

cd ~ / .virtualenvs / py3
bin źródłowy / aktywuj
pip3 zainstaluj nazwę-pakietu

4
To nie wydaje się poprawne. Vivid (15.04) ma python3-virtualenvi python3-venvdostępne pakiety. Zakładam, że python3-venvto właściwy pakiet, w którym to przypadku nie mam pojęcia, do czego python3-virtualenvsłuży.
knite

Błędny. Możesz użyć virtualenv(wykonywalnego) do stworzenia środowiska z dowolnym tłumaczem, w tym PyPy, w porządku np virtualenv -p python3 newenv.
saaj

0

Cóż, komplikuje się. Poniższe informacje przedstawiono w stosunku do Ubuntu Xenial (będącego podstawą wydania dla Linux Mint, którego używam). Rozwiążmy to:

pyvenv

Odnosi się do skryptu opakowania pakietu stdlib Python 3.3+ . Ale był przestarzały od Pythona 3.6.

Jest to również pakiet PyPi , który jest przełącznikiem środowiska wirtualnego.

venv

Jest to pakiet stdlib Python 3.3+ , którego celem było ulepszenie i zastąpienie pakietu virtualenv PyPi (patrz PEP 405 ). Ale wygląda na to, że jeszcze go tam nie ma (przynajmniej nie w pełni funkcjonalny).

python-virtualenv i virtualenv

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

Jak widać, działa na Python 3. python-virtualenvPakiet powinien być używany w podobny sposób python2 -m virtualenv py2. Zobaczmy, jak virtualenvdziała na świeżym 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

Jak widać, mimo że virtualenvpakiet używa python3-virtualenv, domyślnie jest tworzone środowisko Python 2.


Zauważyłem również to samo na moim komputerze, na którym działało wówczas Ubuntu 14.04. - „Jak widać, mimo że pakiet virtualenv używa Python3-virtualenv, domyślnie jest to środowisko Python 2.”
karel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.