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

Apa yang terjadi disini? itu python-virtualenv == pyvenv? Bukankah itu masih rusak? Apakah virtualenv asli masih berfungsi dengan python? jika venv (terlalu banyak variasi nama !!!) adalah bagian dari perpustakaan standar, https://docs.python.org/3/library/venv.html , mengapa saya disuruh menginstalnya?

Dan ketika saya mencoba menginstalnya, saya mendapatkan:

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

Pada titik mana saya dibatalkan, karena menginstal python3-pip sebelum itu memberi saya

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

Dan saya tidak yakin apakah paket tambahan akan menimpanya atau menggunakan python 2.7.

Saya membaca bahwa python 3 seharusnya menjadi default ke depan. Karena kedua 2.7 dan 3.4 ada di sana, dan memiliki perintah terpisah, bagaimana cara saya tidak hanya memastikan Python 3 adalah default saya, tetapi apa pun yang saya instal pergi ke sana dan digunakan olehnya bukannya 2,7?

BTW, saya mencoba sudo apt-get python3-virtualenv dan mendapat: E: Tidak dapat menemukan paket python3-virtualenv

Malik A. Rumi
sumber
1
Saya masih ingin tahu apa bedanya - jika ada - di antara semua paket lingkungan virtual yang berbeda namun serupa ini.
Malik A. Rumi
Saya menggunakan 14,04, jadi jawaban ini membantu saya.
FriendFX

Jawaban:

4

Cara menginstal paket Python 3.x dalam lingkungan virtual Python adalah dengan membuat lingkungan virtual Python menggunakan pencipta lingkungan virtual Python 3 ( python3-virtualenv ). python3-virtualenv berada di repositori default Ubuntu di Ubuntu 14.10 dan yang lebih baru.

Instal paket Python 3.x di lingkungan virtual Python di 16.04 dan yang lebih baru

  1. Instal Python 3 pencipta lingkungan virtual

    sudo apt install virtualenv python3-virtualenv
  2. Buat lingkungan virtual Python untuk python3. Anda hanya dapat menginstal paket python3 di dalam lingkungan virtual Python ini. Jika Anda juga ingin menginstal paket Python 2.x, maka Anda perlu membuat lingkungan virtual Python lain.

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

    Lingkungan virtual Python baru untuk python3 akan dibuat di envdirektori yang terletak di direktori saat ini.

  3. Instal paket Python.

    cd / path / to / env / # env adalah direktori lingkungan virtual python3
    sumber bin / aktifkan
    pip3 instal first-package-name next-package-name last-package-name

Ini adalah lingkungan virtual python3 baru dengan versi terbaru pip3, jadi menginstal paket Python di dalamnya akan bekerja dengan baik.


Instal paket Python 3.x dalam lingkungan virtual Python di Ubuntu 14.04

sudo apt-get install virtualenvwrapper  
gedit .bashrc

Tambahkan baris berikut ke akhir .bashrc.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Simpan perubahan ke .bashrc dan tutup gedit. Sumber .bashrc Anda agar perubahan diterapkan.

cd 
source .bashrc

Buat lingkungan virtual Python untuk python3. Anda hanya dapat menginstal paket python3 di dalam lingkungan virtual Python ini. Jika Anda juga ingin menginstal paket Python 2.x, maka Anda perlu membuat lingkungan virtual Python lain.

mkvirtualenv py3 -p /usr/bin/python3

Lingkungan virtual Python baru untuk python3 akan dibuat di ~/.virtualenvs/py3direktori. .virtualenvsadalah folder tersembunyi.

Instal paket.

cd ~ / .virtualenvs / py3
sumber bin / aktifkan
pip3 instal nama-paket
karel
sumber
4
Ini sepertinya tidak benar. Vivid (15,04) memiliki python3-virtualenvdan python3-venvpaket yang tersedia. Saya berasumsi python3-venvadalah paket yang benar, dalam hal ini saya tidak tahu apa tujuannya python3-virtualenv.
knite
Salah. Anda dapat menggunakan virtualenv(dieksekusi) untuk membuat lingkungan dengan penerjemah sewenang-wenang, termasuk PyPy, misalnya Eg virtualenv -p python3 newenv.
Saaj
0

Yah, itu jadi rumit. Berikut ini ditunjukkan terhadap Ubuntu Xenial (yang merupakan rilis mendasar untuk Linux Mint I gunakan). Mari kita mengatasinya:

Pyvenv

Ini merujuk ke skrip wrapper paket Python 3.3+ stdlib . Tapi itu sudah ditinggalkan sejak Python 3.6.

Ini juga merupakan paket PyPi , yang merupakan pengalih lingkungan virtual.

venv

Ini adalah paket stdlib Python 3.3+ yang tujuannya adalah untuk meningkatkan dan mengganti paket virtualenv PyPi (lihat PEP 405 ). Tapi sepertinya belum ada di sana (paling tidak fitur-complete).

python-virtualenv dan virtualenv

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

Seperti yang Anda lihat itu berjalan pada Python 3. python-virtualenvpaket ini dimaksudkan untuk digunakan seperti python2 -m virtualenv py2. Mari kita lihat cara virtualenvkerjanya di Ubuntu Xenial ( docker run --rm -it ubuntu:xenial) baru:

$ 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

Seperti yang Anda lihat meskipun virtualenvpaket sedang digunakan python3-virtualenv, standarnya adalah membuat lingkungan Python 2.

Saaj
sumber
Saya juga memperhatikan hal yang sama pada mesin saya yang menjalankan Ubuntu 14.04 pada saat itu. - "Seperti yang Anda lihat meskipun paket virtualenv menggunakan python3-virtualenv, standarnya adalah membuat lingkungan Python 2."
karel