pyvenv vs venv vs python-virtualenv กับ virtualenv และ 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

เกิดขึ้นที่นี่คืออะไร? python-virtualenv คืออะไร == pyvenv? มันยังไม่พังเหรอ? virtualenv ดั้งเดิมยังทำงานกับ python ได้หรือไม่ หาก venv (มีการเปลี่ยนแปลงชื่อมากเกินไป !!!) เป็นส่วนหนึ่งของไลบรารีมาตรฐานhttps://docs.python.org/3/library/venv.htmlทำไมฉันจึงถูกบอกให้ติดตั้ง

และเมื่อฉันพยายามติดตั้งฉันได้รับ:

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

ณ จุดนี้ฉันถูกยกเลิกเนื่องจากการติดตั้ง python3-pip ก่อนหน้านั้นให้ฉัน

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

และฉันไม่แน่ใจว่าแพ็กเกจพิเศษจะเขียนทับมันหรือไปยัง python 2.7

ฉันอ่านว่า python 3 น่าจะเป็นค่าเริ่มต้นที่จะดำเนินต่อไป เนื่องจากทั้ง 2.7 และ 3.4 อยู่ที่นั่นและมีคำสั่งแยกต่างหากฉันจะทำอย่างไรไม่ให้แน่ใจว่า Python 3 เป็นค่าเริ่มต้นของฉัน แต่สิ่งใดก็ตามที่ฉันติดตั้งจะไปที่นั่นและใช้แทน 2.7

BTW ฉันลอง sudo apt-get python3-virtualenv และได้รับ: E: ไม่สามารถค้นหาแพ็คเกจ python3-virtualenv


1
ฉันยังอยากทราบว่าความแตกต่าง - ถ้ามี - อยู่ระหว่างแพ็คเกจสภาพแวดล้อมเสมือนเหล่านี้แตกต่างกัน แต่มีชื่อคล้ายกัน
Malik A. Rumi

ฉันใช้ 14.04 ดังนั้นคำตอบนี้ช่วยฉันได้
FriendFX

คำตอบ:


4

วิธีการติดตั้งแพ็คเกจ Python 3.x ในสภาพแวดล้อมเสมือน Python คือการสร้างสภาพแวดล้อมเสมือน Python โดยใช้ผู้สร้างสภาพแวดล้อมเสมือน Python 3 ( python3-virtualenv ) python3-virtualenv อยู่ในที่เก็บเริ่มต้นของ Ubuntu ใน Ubuntu 14.10 และใหม่กว่า

ติดตั้งแพ็กเกจ Python 3.x ในสภาพแวดล้อมเสมือน Python ใน 16.04 และใหม่กว่า

  1. ติดตั้งผู้สร้างสภาพแวดล้อมเสมือน Python 3

    sudo apt install virtualenv python3-virtualenv
  2. สร้างสภาพแวดล้อมเสมือน Python สำหรับ python3 คุณสามารถติดตั้งแพ็คเกจ python3 ภายในสภาพแวดล้อมเสมือน Python นี้เท่านั้น หากคุณต้องการติดตั้งแพ็กเกจ Python 2.x คุณต้องสร้างสภาพแวดล้อมเสมือน Python อีกอัน

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

    สภาพแวดล้อมเสมือน Python ใหม่สำหรับ python3 จะถูกสร้างขึ้นในenvไดเรกทอรีซึ่งอยู่ในไดเรกทอรีปัจจุบัน

  3. ติดตั้งแพ็คเกจ Python

    cd / path / to / env / # env เป็นไดเรกทอรีของสภาพแวดล้อมเสมือน python3
    ถังขยะ / เปิดใช้งาน
    pip3 ติดตั้งชื่อแพคเกจต่อไปชื่อแพคเกจนามสกุลชื่อแพคเกจ

นี่คือสภาพแวดล้อมเสมือน python3 ใหม่ที่มี pip3 รุ่นล่าสุดดังนั้นการติดตั้งแพคเกจ Python ในนั้นจะใช้งานได้ดี


ติดตั้งแพ็คเกจ Python 3.x ในสภาพแวดล้อมเสมือน Python ใน Ubuntu 14.04

sudo apt-get install virtualenvwrapper  
gedit .bashrc

เพิ่มบรรทัดต่อไปนี้ในตอนท้ายของ. bashrc

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

บันทึกการเปลี่ยนแปลงเป็น. bashrc และปิด gedit แหล่งที่มา. bashrc ของคุณเพื่อให้การเปลี่ยนแปลงมีผล

cd 
source .bashrc

สร้างสภาพแวดล้อมเสมือน Python สำหรับ python3 คุณสามารถติดตั้งแพ็คเกจ python3 ภายในสภาพแวดล้อมเสมือน Python นี้เท่านั้น หากคุณต้องการติดตั้งแพ็กเกจ Python 2.x คุณต้องสร้างสภาพแวดล้อมเสมือน Python อีกอัน

mkvirtualenv py3 -p /usr/bin/python3

สภาพแวดล้อมเสมือน Python ใหม่สำหรับ python3 จะถูกสร้างขึ้นใน~/.virtualenvs/py3ไดเรกทอรี .virtualenvsเป็นโฟลเดอร์ที่ซ่อนอยู่

ติดตั้งแพ็คเกจ

cd ~ / .virtualenvs / py3
ถังขยะ / เปิดใช้งาน
pip3 install package-name

4
ดูเหมือนจะไม่ถูกต้อง Vivid (15.04) มีpython3-virtualenvและpython3-venvแพ็คเกจให้ใช้งาน ฉันสมมติว่าpython3-venvเป็นแพคเกจที่ถูกต้องซึ่งในกรณีนี้ผมมีความคิดว่าจุดประสงค์python3-virtualenvทำหน้าที่
knite

ไม่ถูกต้อง คุณสามารถใช้virtualenv(ปฏิบัติการ) เพื่อสร้างสภาพแวดล้อมที่มีล่ามพลรวมทั้ง PyPy virtualenv -p python3 newenvเพียงแค่ปรับเช่น
saaj

0

มันซับซ้อนมาก ต่อไปนี้แสดงกับ Ubuntu Xenial (ซึ่งเป็นรุ่นพื้นฐานสำหรับ Linux Mint I ที่ใช้) ลองเรียงมันออกมา:

pyvenv

มันอ้างถึงสคริปต์ตัวห่อของ Python 3.3+ stdlib แต่เลิกใช้แล้วตั้งแต่ Python 3.6

นอกจากนี้ยังเป็นแพ็คเกจ PyPiซึ่งเป็นตัวสลับสภาพแวดล้อมเสมือน

venv

เป็นแพ็คเกจ Python 3.3+ stdlibซึ่งมีวัตถุประสงค์เพื่อปรับปรุงและแทนที่แพ็คเกจ PyPi virtualenv (ดูPEP 405 ) แต่ดูเหมือนว่ายังไม่ได้มี (อย่างน้อยก็ไม่สมบูรณ์เหมือนฟีเจอร์)

python-virtualenv และ virtualenv

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

ในขณะที่คุณสามารถเห็นมันทำงานบนหลาม 3. แพคเกจจะหมายถึงนำมาใช้เช่นpython-virtualenv python2 -m virtualenv py2มาดูกันว่าvirtualenvUbuntu 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

อย่างที่คุณเห็นแม้จะใช้virtualenvแพ็คเกจอยู่python3-virtualenvแต่ค่าเริ่มต้นคือสร้างสภาพแวดล้อม Python 2


ฉันได้สังเกตเห็นสิ่งเดียวกันบนเครื่องของฉันซึ่งใช้ Ubuntu 14.04 ในเวลานั้น - "อย่างที่คุณเห็นแม้ว่าแพ็คเกจ virtualenv ใช้ python3-virtualenv ค่าเริ่มต้นคือสร้างสภาพแวดล้อม Python 2"
karel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.