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

Chuyện gì đang xảy ra ở đây? là python-virtualenv == pyvenv? Vẫn chưa vỡ à? Virtualenv ban đầu vẫn hoạt động với python? nếu venv (quá nhiều biến thể tên !!!) là một phần của thư viện chuẩn, https://docs.python.org/3/l Library / venv.html , tại sao tôi lại được yêu cầu cài đặt nó?

Và khi tôi cố gắng cài đặt nó, tôi đã nhận được:

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

Tại thời điểm đó tôi đã hủy bỏ, vì cài đặt python3-pip ngay trước đó đã cho tôi

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

Và tôi không chắc liệu các gói bổ sung sẽ ghi đè lên chúng hay đi lên python 2.7.

Tôi đọc rằng python 3 được cho là mặc định trong tương lai. Vì cả 2.7 và 3.4 đều ở đó và có các lệnh riêng biệt, làm thế nào để tôi không chỉ đảm bảo Python 3 là mặc định của mình, mà mọi thứ tôi cài đặt đều ở đó và được sử dụng bởi nó thay vì 2.7?

BTW, tôi đã thử sudo apt-get python3-virtualenv và nhận được: E: Không thể định vị gói python3-virtualenv


1
Tôi vẫn muốn biết sự khác biệt - nếu có - là giữa tất cả các gói môi trường ảo khác nhau nhưng được đặt tên tương tự này.
Malik A. Rumi

Tôi đang sử dụng 14.04, vì vậy câu trả lời này đã giúp tôi.
FriendFX

Câu trả lời:


4

Cách để cài đặt các gói Python 3.x trong môi trường ảo Python là tạo môi trường ảo Python bằng trình tạo môi trường ảo Python 3 ( python3-virtualenv ). python3-virtualenv nằm trong kho Ubuntu mặc định trong Ubuntu 14.10 trở lên.

Cài đặt các gói Python 3.x trong môi trường ảo Python vào 16.04 trở lên

  1. Cài đặt trình tạo môi trường ảo Python 3

    sudo apt install virtualenv python3-virtualenv
  2. Tạo một môi trường ảo Python cho python3. Bạn chỉ có thể cài đặt các gói python3 trong môi trường ảo Python này. Nếu bạn cũng muốn cài đặt các gói Python 2.x, thì bạn cần tạo một môi trường ảo Python khác.

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

    Môi trường ảo Python mới cho python3 sẽ được tạo trong envthư mục nằm trong thư mục hiện tại.

  3. Cài đặt các gói Python.

    cd / path / to / env / # env là thư mục của môi trường ảo python3
    thùng nguồn / kích hoạt
    Pip3 cài đặt tên gói đầu tiên tên gói tiếp theo tên cuối cùng tên gói

Đây là một môi trường ảo python3 mới với phiên bản mới nhất của pip3, vì vậy cài đặt các gói Python trong nó sẽ hoạt động rất tốt.


Cài đặt các gói Python 3.x trong môi trường ảo Python trong Ubuntu 14.04

sudo apt-get install virtualenvwrapper  
gedit .bashrc

Thêm dòng sau vào cuối .bashrc.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Lưu các thay đổi vào .bashrc và đóng gedit. Nguồn .bashrc của bạn để các thay đổi có hiệu lực.

cd 
source .bashrc

Tạo một môi trường ảo Python cho python3. Bạn chỉ có thể cài đặt các gói python3 trong môi trường ảo Python này. Nếu bạn cũng muốn cài đặt các gói Python 2.x, thì bạn cần tạo một môi trường ảo Python khác.

mkvirtualenv py3 -p /usr/bin/python3

Môi trường ảo Python mới cho python3 sẽ được tạo trong ~/.virtualenvs/py3thư mục. .virtualenvslà một thư mục ẩn.

Cài đặt một gói.

cd ~ / .virtualenvs / py3
thùng nguồn / kích hoạttên gói 
cài đặt pip3

4
Điều này dường như không đúng. Sống động (15.04) có python3-virtualenvpython3-venvcác gói có sẵn. Tôi giả sử python3-venvlà gói chính xác, trong trường hợp đó tôi không biết mục đích nào python3-virtualenvphục vụ.
knite

Sai. Bạn có thể sử dụng virtualenv(thực thi) để tạo môi trường với trình thông dịch tùy ý, bao gồm PyPy, tốt thôi Eg virtualenv -p python3 newenv.
saaj

0

Vâng, nó trở nên phức tạp. Phần sau đây được hiển thị dựa trên Ubuntu Xenial (bản phát hành cơ bản cho Linux Mint tôi sử dụng). Hãy sắp xếp nó ra:

kim tự tháp

Nó đề cập đến kịch bản trình bao bọc của gói Python 3.3+ stdlib . Nhưng nó không được dùng nữa kể từ Python 3.6.

Nó cũng là một gói PyPi , một trình chuyển đổi môi trường ảo.

venv

Đó là gói stdlib Python 3.3+ với mục đích cải thiện và thay thế gói ảoen PyPi (xem PEP 405 ). Nhưng có vẻ như nó chưa ở đó (ít nhất là không đầy đủ tính năng).

python-virtualenv và virtualenv

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

Như bạn có thể thấy nó chạy trên python-virtualenvgói Python 3. có nghĩa là được sử dụng như thế nào python2 -m virtualenv py2. Hãy xem cách virtualenvhoạt động trên Ubuntu Xenial ( docker run --rm -it ubuntu:xenial) mới:

$ 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

Như bạn có thể thấy mặc dù virtualenvgói đang sử dụng python3-virtualenv, mặc định của nó là tạo môi trường Python 2.


Tôi cũng đã nhận thấy điều tương tự trên máy của tôi đang chạy Ubuntu 14.04 vào thời điểm đó. - "Như bạn có thể thấy mặc dù gói virtualenv đang sử dụng python3-virtualenv, mặc định của nó là tạo môi trường Python 2."
karel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.