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

Burada neler oluyor? -virtualenv == pyvenv nedir? Hala kırık değil mi? Orijinal virtualenv hala python ile çalışıyor mu? venv (çok fazla ad varyasyonu !!!) standart kütüphanenin bir parçasıysa, https://docs.python.org/3/library/venv.html , neden yüklemem isteniyor ?

Ve yüklemeyi denediğimde:

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

Hangi noktada iptal ettim, çünkü bana vermeden hemen önce python3-pip kurmak

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

Ve ekstra paketlerin üzerine yazıp yazmayacağından veya python 2.7'ye geçip girmeyeceğinden emin değildim.

Python 3'ün varsayılan olarak varsayılan olması gerektiğini okudum. Hem 2.7 hem de 3.4 orada olduğundan ve ayrı komutlara sahip olduğundan, Python 3'ün varsayılanlarım olduğundan emin olmakla kalmaz, yüklediğim her şeyin oraya gider ve 2.7 yerine onun tarafından kullanılmasını nasıl sağlarım?

BTW, sudo apt-get python3-virtualenv'i denedim ve aldım: E: python3-virtualenv paketi bulunamadı


1
Hala tüm bu farklı ama benzer şekilde adlandırılmış sanal ortam paketleri arasındaki farkın - varsa - ne olduğunu bilmek istiyorum.
Malik

14.04 kullanıyorum, bu yüzden bu cevap bana yardımcı oldu.
FriendFX

Yanıtlar:


4

Python 3.x paketlerini bir Python sanal ortamına kurmanın yolu, Python 3 sanal ortam yaratıcısı ( python3-virtualenv ) kullanarak Python sanal ortamı oluşturmaktır . python3-virtualenv, Ubuntu 14.10 ve sonraki sürümlerde varsayılan Ubuntu depolarındadır.

16.04 ve sonrasında Python 3.x paketlerini Python sanal ortamına kurma

  1. Python 3 sanal ortam oluşturucuyu yükleme

    sudo apt install virtualenv python3-virtualenv
  2. Python3 için bir Python sanal ortamı oluşturun. Python3 paketlerini yalnızca bu Python sanal ortamına kurabilirsiniz. Python 2.x paketlerini de yüklemek istiyorsanız, başka bir Python sanal ortamı oluşturmanız gerekir.

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

    envGeçerli dizinde bulunan dizinde python3 için yeni Python sanal ortamı oluşturulacaktır .

  3. Python paketlerini yükleyin.

    cd / path / to / env / # env, python3 sanal ortamının dizinidir
    kaynak kutusu / etkinleştir
    python3 -m pip install first-package-name sonraki-paket-adı son-paket-adı

Bu, pip3'ün en son sürümüne sahip yeni bir python3 sanal ortamıdır, bu nedenle Python paketlerini yüklemek harika çalışır.


Ubuntu 14.04'te Python 3.x paketlerini Python sanal ortamına kurma

sudo apt-get install virtualenvwrapper  
gedit .bashrc

Aşağıdaki satırı .bashrc sonuna ekleyin.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Değişiklikleri .bashrc'ye kaydedin ve gedit'i kapatın. Değişikliklerin etkili olması için .bashrc'nizi kaynaklayın.

cd 
source .bashrc

Python3 için bir Python sanal ortamı oluşturun. Python3 paketlerini yalnızca bu Python sanal ortamına kurabilirsiniz. Python 2.x paketlerini de yüklemek istiyorsanız, başka bir Python sanal ortamı oluşturmanız gerekir.

mkvirtualenv py3 -p /usr/bin/python3

Dizinde python3 için yeni Python sanal ortamı oluşturulacaktır ~/.virtualenvs/py3. .virtualenvsgizli bir klasördür.

Bir paket kurun.

cd ~ / .virtualenvs / py3
kaynak kutusu / etkinleştir
python2 -m pip install paket adı

4
Bu doğru görünmüyor. Vivid (15.04) mevcut python3-virtualenvve python3-venvpaketleri mevcut. python3-venvDoğru paket olduğunu varsayıyorum , bu durumda hangi amaca python3-virtualenvhizmet ettiğini bilmiyorum .
knite

Yanlış. virtualenvPyPy de dahil olmak üzere keyfi yorumlayıcı ile ortam oluşturmak için (çalıştırılabilir) kullanabilirsiniz virtualenv -p python3 newenv.
saaj

0

Bu karmaşık bir hal alıyor. Aşağıdaki Ubuntu Xenial (Linux Mint için kullandığım temel sürüm) karşısında gösterilmiştir. Hadi sıralayalım:

pyvenv

Python 3.3+ stdlib paketinin sarmalayıcı komut dosyasıdır. Ancak Python 3.6'dan beri kullanımdan kaldırıldı.

Aynı zamanda bir sanal ortam değiştirici olan bir PyPi paketidir .

venv

Amacı PyPi virtualenv paketini geliştirmek ve değiştirmek olan Python 3.3+ stdlib paketidir (bkz. PEP 405 ). Ama henüz orada değil gibi görünüyor (en azından tam özellikli değil).

python-virtualenv ve virtualenv

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

Gördüğünüz gibi Python 3 üzerinde çalışıyor. python-virtualenvPaket gibi kullanılmak üzere tasarlanmıştır python2 -m virtualenv py2. Bakalım virtualenvyeni Ubuntu Xenial ( docker run --rm -it ubuntu:xenial) üzerinde nasıl çalışıyor :

$ 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

virtualenvPaket kullanıyor olsa da görebileceğiniz gibi python3-virtualenv, varsayılan değeri Python 2 ortamı oluşturmaktır.


Aynı zamanda Ubuntu 14.04'ü çalıştıran makinemde de aynı şeyi fark ettim. - "Sanalenv paketi python3-virtualenv kullanıyor olsa bile, varsayılanı Python 2 ortamı yaratmaktır."
karel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.