ใช้ Python เวอร์ชั่นอื่นกับ virtualenv


1115

ฉันมีระบบ Debian ที่ใช้กับ python 2.5.4 อยู่ในขณะนี้ ฉันได้ติดตั้ง virtualenv อย่างถูกต้องทุกอย่างทำงานได้ดี มีความเป็นไปได้ไหมที่ฉันจะสามารถใช้ virtualenv กับ Python เวอร์ชั่นอื่นได้หรือไม่?

ฉันรวบรวม Python 2.6.2 และต้องการใช้กับ virtualenv บางตัว มันเพียงพอที่จะเขียนทับไฟล์ไบนารีหรือไม่? หรือฉันต้องเปลี่ยนอะไรบางอย่างเกี่ยวกับห้องสมุด?


8
เพียงพูดถึงว่าคุณสามารถทำได้โดยใช้ virtualenvwrapper ด้วย
อคติ

13
ที่น่าสังเกตว่าในหลาม 3 มีในตัว virtualenv เทียบเท่า: venv
naught101

2
เป็นไปไม่ได้ที่จะเปลี่ยนเวอร์ชั่นไพ ธ อนในสภาพแวดล้อมปัจจุบันโดยไม่ต้องสร้างสภาพแวดล้อมใหม่?
Charlie Parker

คำตอบ:


1542

เพียงใช้ตัวเลือก--python(หรือตัวย่อ-p) เมื่อสร้างอินสแตนซ์ virtualenv ของคุณเพื่อระบุ Python ที่คุณต้องการใช้เช่น

virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>

หมายเหตุสำหรับPython 3.3หรือใหม่กว่าอ้างอิงคำตอบของ The Aelfinn ด้านล่าง


160
ฉันคิดว่าฉันพูดถึงว่าสิ่งนี้ใช้ได้กับ virtualenvwrappers ด้วยเช่นกัน: mkvirtualenv -p python2.6 env
อคติ

65
ฉันพลาดอะไรบางอย่างที่นี่ - สิ่งนี้ไม่ได้ต้องการให้ติดตั้ง 2.6 บนระบบหรือไม่ ฉันคิดว่าประเด็นของ virtualenv คือฉันสามารถมีไพ ธ อนรุ่นอื่นนอกเหนือจากตัวหลัก (ในกรณีของฉันคือ 2.4 บน CentOS) ฉันสมมติว่าฉันสามารถติดตั้ง virtualenv ได้จากนั้นติดตั้ง Python 2.6 สำหรับแพ็คเกจใน env เพื่อใช้งานหรือไม่
John C

42
@ จอห์นใช่คุณเป็น นั่นไม่ใช่จุดของ virtualenv: จุดประสงค์คือการสร้างสภาพแวดล้อมแบบ sandbox สำหรับ Python คุณจะต้องติดตั้งเวอร์ชันนั้นก่อน - คุณสามารถติดตั้งภายในเครื่องสำหรับผู้ใช้ของคุณ
Daniel Roseman

8
@JohnC คุณสามารถใช้ pythonbrew เพื่อติดตั้ง pythons อื่น
ashwoods

54
หากคุณขี้เกียจตาด:virtualenv -p `which python2.6` <path/to/new/virtualenv>
ลุกโชน

293

ตั้งแต่ Python 3 Python Docs ขอแนะนำให้สร้างสภาพแวดล้อมเสมือนจริงด้วยคำสั่งต่อไปนี้:

python3 -m venv <myenvname>

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


ข้อมูลล้าสมัย

pyvenv สคริปต์สามารถนำมาใช้ในการสร้างสภาพแวดล้อมเสมือนจริง

pyvenv /path/to/new/virtual/environment

แต่เลิกใช้แล้วตั้งแต่ Python 3.6


8
ดีใจที่คุณชี้ให้เห็นว่ามันต้องการการส่งเสริมมากขึ้น หนึ่งเล็กน้อยเล็กน้อย: พวกเขากำลังเรียกใช้python3 -m venv <envname>เพื่อป้องกันสคริปต์ stub สำหรับทุกสิ่ง
Paul Everitt

6
ในความเป็นจริงpyvenvสคริปต์ถูกเลิกใช้ใน Python 3.6+ แม้ว่าvenvโมดูลที่อ้างอิงเองจะไม่ ดังนั้นใช้python 3 -m venv <myenvname>เป็น @PaulEveritt พูดว่า
RichVel

5
ได้รับการเตือนpyvenvหรือpython3 -m venv ...อย่าติดตั้งpython-configสคริปต์ ซึ่งหมายความว่าแม้หลังจากเปิดใช้งานสภาพแวดล้อม Python3 ของคุณทั่วทั้งระบบpython-configจะถูกเรียกใช้ด้วยผลที่สับสน ดูรายงานข้อผิดพลาดนี้จาก 2011 github.com/pypa/virtualenv/issues/169และคำถามของฉันstackoverflow.com/questions/42020937/ …
Laryx Decidua

1
"โปรดทราบว่าvenvไม่อนุญาตให้สร้าง virtualenv ด้วย Python รุ่นอื่น" - คุณแน่ใจหรือว่านี่เป็นเรื่องจริง ดูเหมือนว่าจะใช้งานได้ดีสำหรับฉันถ้าฉันสร้างมันด้วยรุ่น Python เฉพาะเช่นpython3.5 -m venv <myenvname>(โดยมีเงื่อนไขว่าฉันมีรุ่น Python ที่พร้อมใช้งาน)
Dominick Pastore

5
การยืนยันว่าการสังเกตของ @ Nick ทำงานได้: วิธีการสร้าง a venvด้วยเวอร์ชัน Python ที่เจาะจงคือการใช้เวอร์ชันนั้นเมื่อทำการตั้งค่า ตัวอย่างเช่น:python3.5 -m venv venv
tanius

183

เหล่านี้เป็นขั้นตอนที่คุณสามารถปฏิบัติตามเมื่อคุณอยู่ในสภาพแวดล้อมการโฮสต์ที่ใช้ร่วมกันและจำเป็นต้องติดตั้งและรวบรวม Python จากแหล่งที่มาแล้วสร้างvenvจากเวอร์ชัน Python ของคุณ สำหรับ Python 2.7.9 คุณจะทำอะไรตามบรรทัดเหล่านี้:

mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install

env เสมือน

cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate   

โดยปกติสิ่งนี้สามารถใช้ได้กับทุกสถานการณ์ที่คุณต้องการจำลองสภาพแวดล้อมที่แน่นอนที่คุณทำงานและปรับใช้


2
คุณช่วยอธิบายรายละเอียดเกี่ยวกับสาเหตุที่ต้องทำเช่นนั้นได้อย่างไร: ติดตั้ง python ในเครื่องทำไม และที่สำคัญกว่าการติดตั้ง virtualenv ทำไมใช้รุ่นหลามที่คุณต้องการที่จะใช้กับมัน ?
lajarre

15
แน่ใจ หากคุณอยู่ในสภาพแวดล้อมการโฮสต์เสมือนและเซิร์ฟเวอร์ให้บริการไพ ธ อนรุ่นเก่าที่คุณไม่พอใจ - นั่นคือสถานการณ์ของฉัน นอกจากนี้หากคุณเกิดขึ้นในการพัฒนาโครงการบนเซิร์ฟเวอร์ที่แตกต่างกันและคุณต้องการที่จะทำซ้ำสภาพแวดล้อมเหล่านี้บนเครื่องท้องถิ่นของคุณ .... Virtualenv สร้างฮาร์ดลิงก์ไปยัง python libs ดังนั้นจึงเป็นเรื่องสำคัญมากสำหรับเวอร์ชันของ python ที่คุณใช้ในการติดตั้งและสร้าง Virtualenv จาก
zzart

6
หรือถ้าคุณเป็นเหมือนฉันและอยู่ในเครื่องล็อคที่ทำงานโดยไม่มีสิทธิ์ sudo สำเนาโลคัลไลบรารีฐานข้อมูล SQL ภาษาและคอมไพเลอร์มากมาย! ขอบคุณ!
zachd1_618

4
ภายใต้ virtualenv 1.9.1 ฉันต้องใช้~/.localpython/bin/virtualenvแทนvirtualenvการติดตั้งให้เสร็จโดยไม่มีข้อผิดพลาด นอกจากนี้ยังใช้แทนsource ve/bin/activate source activate
ซาอูล

3
อีกเหตุผลในการทำเช่นนี้คือลองทดสอบ betas ก่อนที่พวกเขาจะไปหลักเพื่อให้แน่ใจว่าโครงการของคุณและการพึ่งพาของพวกเขายังคงทำงานโดยไม่เสี่ยงต่อการจัดการแพคเกจของคุณโดยการปิดบังบางสิ่งบางอย่าง ฉันชอบคำตอบนี้
RobotHumans

103
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>

2
ดูคำตอบของฉันด้านล่างเพื่อรับโซลูชันที่เทียบเท่าโดยใช้ตัวแปรสภาพแวดล้อม -pว่าวิธีการหมายความว่าคุณไม่ต้องจำที่จะใช้
Chris Johnson

5
ไม่มีวิธีแก้ปัญหาที่สลับไปมาระหว่างรุ่นไพ ธ อนโดยไม่ต้องการสร้างสภาพแวดล้อมเสมือนใหม่หรือไม่
Charlie Parker

3
ใช้งานได้ไหมถ้าคุณต้องการติดตั้งเวอร์ชั่นหลามที่ไม่ได้ติดตั้งไว้ในระบบของคุณ? สมมติว่าคุณต้องการทดสอบpython3.6แต่ไม่ต้องการpython3.5ติดตั้งระบบสัมผัสในคอมพิวเตอร์ของคุณ?
alpha_989

1
@ alpha_989 คุณพบวิธีแก้ปัญหานี้หรือไม่?
Daniil Mashkin

97

มีวิธีที่ง่ายกว่าคือ

virtualenv venv --python=python2.7

ขอบคุณสำหรับความคิดเห็นสิ่งนี้ใช้ได้เฉพาะเมื่อคุณติดตั้ง python2.7 ที่ระดับระบบ (เช่น /usr/bin/python2.7)

มิฉะนั้นถ้าคุณใช้ homebrew คุณสามารถใช้เส้นทางเพื่อให้สิ่งที่คุณต้องการ

virtualenv venv --python=/usr/local/bin/python

คุณสามารถค้นหาพา ธ ไปยังการติดตั้งไพ ธ อนด้วย

which python

สิ่งนี้จะทำงานกับ python 3 ด้วย

which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3

ในที่สุดควบแน่นไปที่:

virtualenv venv -p `which python`
virtualenv venv -p `which python3`

1
FYI ใช้งานได้เฉพาะเมื่อคุณติดตั้ง python2.7 ในระดับระบบ (เช่น /usr/bin/python2.7)
kingb12

ฉันสามารถทำสิ่งนี้ได้virtualenv venv --python=python3.6เช่นกัน
จอร์แดน

คุณสามารถวางหมายเลขรุ่นรองได้จริง virtualenv env --python=python2
Anshul

นั่นเป็นทางออกที่เหมาะสมเมื่อคุณมีทุกเวอร์ชันคุณสนใจที่จะใช้ชื่อแทนไม่ใช่เส้นทางแบบเต็ม
user1767754

ใน Windows นี้ทำงานเช่นเสน่ห์กับบิดเล็กน้อย: virtualenv venv --python=<insert_your_python_version_here>ที่<insert_your_python_version_here>อยู่ในกรณีของฉันC:\Python\Python368\python.exe
abautista

70

ภายใต้ Windows สำหรับฉันงานนี้:

virtualenv --python=c:\Python25\python.exe envname

ถ้าไม่มีpython.exeฉันก็WindowsError: [Error 5] Access is denied มี Python2.7.1 ติดตั้งพร้อม virtualenv 1.6.1 และฉันต้องการ python 2.5.2


32

Mac OSX 10.6.8 (Snow Leopard):

1) เมื่อคุณดำเนินpip install virtualenvการคำสั่ง pip จะเชื่อมโยงกับหนึ่งในรุ่นหลามของคุณและvirtualenvได้รับการติดตั้งในเวอร์ชันของหลามนั้น คุณทำได้

 $ which pip   

เพื่อดูว่าเวอร์ชันของไพ ธ อนนั้นคืออะไร หากคุณเห็นสิ่งที่ชอบ:

 $ which pip
 /usr/local/bin/pip

จากนั้นทำ:

$ ls -al /usr/local/bin/pip
lrwxrwxr-x  1 root  admin  65 Apr 10  2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip

คุณสามารถดูเวอร์ชันของหลามได้ในผลลัพธ์

โดยค่าเริ่มต้นนั่นจะเป็นเวอร์ชันของไพ ธ อนที่ใช้สำหรับสภาพแวดล้อมใหม่ใด ๆ ที่คุณสร้างขึ้น อย่างไรก็ตามคุณสามารถระบุเวอร์ชันของงูหลามที่ติดตั้งบนคอมพิวเตอร์ของคุณเพื่อใช้ภายในสภาพแวดล้อมใหม่ด้วย-p flag:

$ virtualenv -p python3.2 my_env  
Running virtualenv with interpreter /usr/local/bin/python3.2  
New python executable in my_env/bin/python  
Installing setuptools, pip...done.  

virtualenv my_env จะสร้างโฟลเดอร์ในไดเรกทอรีปัจจุบันซึ่งจะมีไฟล์ที่ใช้งาน Python และสำเนาของ pip [คำสั่ง] ซึ่งคุณสามารถใช้เพื่อติดตั้งแพ็คเกจอื่น ๆ

http://docs.python-guide.org/en/latest/dev/virtualenvs/

virtualenv เพียงแค่คัดลอกไพ ธ อนจากตำแหน่งบนคอมพิวเตอร์ของคุณไปยังไดเรกทอรี my_env / bin / ที่สร้างขึ้นใหม่

2) หลามระบบอยู่ใน/usr/binขณะที่รุ่นหลามต่างๆที่ฉันติดตั้งเป็นค่าเริ่มต้นติดตั้งลงใน:

 /usr/local/bin

3) งูเหลือมต่าง ๆ ที่ฉันติดตั้งมีชื่อเช่นpython2.7หรือpython3.2และฉันสามารถใช้ชื่อเหล่านั้นแทนเส้นทางแบบเต็ม

======== VIRTUALENVWRAPPER =========

1) ฉันมีปัญหาบางอย่างในการทำให้ virtualenvwrapper ทำงาน นี่คือสิ่งที่ฉันลงเอยด้วยการ~/.bash_profile:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects  #Not very important -- mkproject command uses this
#Added the following based on: 
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh

2) การ-p optionทำงานที่แตกต่างกับ virtualenvwrapper: ฉันต้องระบุเส้นทางแบบเต็มไปยังล่ามหลามที่จะใช้ในสภาพแวดล้อมใหม่ (เมื่อฉันไม่ต้องการใช้รุ่นหลามเริ่มต้น):

$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate

removes the 'bin' directory of the environment activated with 'source
activate' from PATH. 

ซึ่งแตกต่างจาก virtualenv, virtualenvwrapper จะสร้างสภาพแวดล้อมในสถานที่ที่ระบุโดยตัวแปรสภาพแวดล้อม $ WORKON_HOME นั่นทำให้สภาพแวดล้อมทั้งหมดของคุณอยู่ในที่เดียว


which pipไม่ได้บอกรุ่นของ Python มันให้สิ่งนี้กับฉัน/usr/local/bin/pip-
Sankalp

@Sankalp ถ้าคุณทำซีดี/usr/local/binและทำ$ ls -al pipคุณควรเห็นบางสิ่งเช่น: pip -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip
7stud

มีการบันทึกไว้ในคำตอบอยู่บ้าง แต่mkprojectเป็นคำสั่งที่ใช้ถ้าคุณต้องการให้มันสร้างทั้งไดเรกทอรีโครงการและสภาพแวดล้อมเสมือนจริงของเวอร์ชันหลามที่กำหนด mkproject -p /usr/bin/python3.6 myNewPython36Project
Jim Factor

22

สองคำสั่งเหล่านี้ควรทำงานได้ดี

virtualenv -p python2 myenv (สำหรับ python2)

virtualenv -p python3 myenv (สำหรับ python3)


1
แฟล็ก -p python2 ทำงานเทียบเท่ากับการค้นหา / usr / bin / python2 การใช้งาน: virtualenv -p python2.7 myenv สำหรับ 2.7 เป็นต้น
Yash Sharma

21

สมมติว่าคุณติดตั้ง python 2.7 ใน virtualenv ของคุณในปัจจุบัน แต่ต้องการใช้ประโยชน์จากpython3.2คุณจะต้องอัปเดตสิ่งนี้ด้วย:

$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv

จากนั้นเปิดใช้งานvirtualenvของคุณโดย:

$ source activate name_of_your_virtualenv

จากนั้นทำ: python --versionในเชลล์เพื่อตรวจสอบว่าเวอร์ชั่นของคุณอัพเดตหรือไม่


ดูคำตอบของฉันด้านล่างเพื่อรับโซลูชันที่เทียบเท่าโดยใช้ตัวแปรสภาพแวดล้อม -pว่าวิธีการหมายความว่าคุณไม่ต้องจำที่จะใช้
Chris Johnson

13

คุณสามารถโทรหาvirtualenvด้วยรุ่นไพ ธ อนที่คุณต้องการ ตัวอย่างเช่น:

python3 -m virtualenv venv

หรืออีกทางหนึ่งชี้ไปที่เส้นทาง virtualenv ของคุณโดยตรง เช่นสำหรับ windows:

c:\Python34\Scripts\virtualenv.exe venv

และด้วยการวิ่ง:

venv/bin/python

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

คุณสามารถดูเวอร์ชันของหลามที่ติดตั้งในสภาพแวดล้อมเสมือนจริง


ฉันได้รับข้อผิดพลาดนี้ในการรันคำสั่งแรก / usr / local / bin / python3: ไม่มีโมดูลชื่อ virtualenv
tanvi

2
@tanvi: คุณต้องติดตั้ง virtualenv ลงใน python3 ของคุณก่อน ดำเนินการpip3 install virtualenvก่อน
Nima Soroush

12

-pวิธีการทำงานได้ดี แต่คุณต้องจำที่จะใช้มันทุกครั้ง หากเป้าหมายของคุณคือเปลี่ยนไปใช้ Python เวอร์ชันใหม่กว่าปกตินั่นเป็นความเจ็บปวดและอาจนำไปสู่ข้อผิดพลาดได้

ตัวเลือกอื่น ๆ -pของคุณคือการตั้งค่าตัวแปรสภาพแวดล้อมที่ไม่เป็นสิ่งเดียวกับ ตั้งค่านี้ผ่าน~/.bashrcไฟล์ของคุณหรือที่ใดก็ตามที่คุณจัดการตัวแปรสภาพแวดล้อมสำหรับเซสชันการเข้าสู่ระบบของคุณ:

export VIRTUALENV_PYTHON=/path/to/desired/version

จากนั้นvirtualenvจะใช้ทุกครั้งที่คุณไม่ได้ระบุ-pในบรรทัดคำสั่ง


มันทำงานได้อย่างสวยงาม ความคิดใดว่าทำไมการตั้งค่าexport VIRTUALENVWRAPPER_PYTHON=/path/to/desired/versionตามเอกสาร virtualenvwrapperไม่ทำงาน แต่วิธีนี้ใช้งานได้?
YPCrumble

นั่นคือ env var ที่ Python virtualenvwrapperใช้เมื่อทำงานไม่มีอะไรเกี่ยวข้องกับการติดตั้ง
Chris Johnson

สิ่งนี้ใช้ได้สำหรับฉัน ไม่ต้องใช้ -p ทุกครั้งที่ฉันสร้าง virtualenv ใหม่ ขอบคุณ!
nedblorf

7

ง่ายยิ่งขึ้นโดยใช้การแทนที่คำสั่งเพื่อค้นหา python2 สำหรับคุณ:

virtualenv -p $(which python2) <path/to/new/virtualenv/>

หรือเมื่อใช้ virtualenvwrapper:

mkvirtualenv -p $(which python2) <env_name>


7

สำหรับ Mac (High Sierra) ให้ติดตั้ง virtualenv บน python3 และสร้าง virtualenv สำหรับ python2:

 $ python3 -m pip install virtualenv
 $ python3 -m virtualenv --python=python2 vp27
 $ source vp27/bin/activate
 (vp27)$ python --version
 Python 2.7.14

1
ติดตั้ง virtualenv บน python3 หากคุณไม่มี:python3 -m pip install virtualenv
Zihao Zhao

มันไม่ทำงาน หลามเวอร์ชั่นของฉันยังคงเป็น 3
shivendra pratap singh

6

ใน mac ฉันใช้ pyenv และ virtualenvwrapper ฉันต้องสร้าง virtualenv ใหม่ คุณต้องการ homebrew ซึ่งฉันจะถือว่าคุณติดตั้งถ้าคุณใช้ mac แต่เพื่อความสนุก:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python  {virtual_env_name}

ฉันยังต้องการของฉันก่อนอื่นดังนั้นฉันสามารถติดตั้งใหม่ใน virtualenv ใหม่ด้วย:

pip install -r requirements.txt

คำสั่งควรเป็นmkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name}รุ่นไม่ใช่รุ่น หากอนุญาตให้แก้ไขสั้น ๆ ฉันจะแก้ไข
Martin Burch

pyenvรวมการสนับสนุน virtualenv ผ่านทางpyenv-virtualenvปลั๊กอินดังนั้นฉันคิดว่าฉันไม่ต้องการ virtualenvwrapper รายละเอียดเพิ่มเติมในคำตอบของฉัน pyenv
RichVel

5

[พฤศจิกายน 2019] ฉันต้องการติดตั้งสภาพแวดล้อม Python 3.7 (env) ในระบบ Arch Linux ที่ใช้ Python 3.8 Python 3.7 ไม่ได้อยู่บนระบบอีกต่อไปดังนั้นฉันจึงไม่สามารถปรับลดรุ่น Python เพื่อติดตั้งแพ็คเกจที่ฉันต้องการ

นอกจากนี้ฉันต้องการใช้แพ็คเกจ / Python 3.7 ภายในสภาพแวดล้อมเสมือนจริง (venv) นี่คือวิธีที่ฉันทำ


ดาวน์โหลดไฟล์ต้นฉบับของ Python:

ฉันดาวน์โหลดไฟล์ต้นฉบับ Python 3.7.4 จาก

https://www.python.org/downloads/source/

ถึง

/mnt/Vancouver/apps/python_versions/src/Python-3.7.4.tgz

จากนั้นฉันก็แยกไฟล์เก็บถาวร (ไฟล์ต้นฉบับ) ไปที่

/mnt/Vancouver/apps/python_versions/src/Python-3.7.4/


การติดตั้ง:

[หมายเหตุ: ในระบบของฉัน env ไม่ใช่ venv]

cd /mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
time ./configure                 ## 17 sec
time make                        ## 1 min 51 sec
time sudo make install           ## 18 sec
time make clean                  ## 0.3 sec

ตรวจสอบเวอร์ชั่น Python ที่ติดตั้ง:

$ which python
/usr/bin/python

$ python --version
Python 3.8.0

$ which python3.7
/usr/local/bin/python3.7

$ python    ## Python 3.8 [system / env]
Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

$ python3.7    ## newly-installed Python 3.7 package
Python 3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0]
>>>

$ python3.7 --version                                                                                                 
Python 3.7.4

วิธีสร้าง venv สำหรับ Python เวอร์ชั่นที่ระบุ:

https://docs.python.org/3/tutorial/venv.html

12.2 สร้างสภาพแวดล้อมเสมือนจริง

venvโมดูลที่ใช้ในการสร้างและจัดการสภาพแวดล้อมเสมือนเรียกว่า venvมักจะติดตั้ง Python เวอร์ชันล่าสุดที่คุณมีอยู่ หากคุณมี Python หลายรุ่นในระบบของคุณคุณสามารถเลือก Python ได้โดยการใช้ python3 หรือเวอร์ชั่นที่คุณต้องการ

ในการสร้างสภาพแวดล้อมเสมือนให้เลือกไดเร็กทอรีที่คุณต้องการวางและรันโมดูล venv เป็นสคริปต์ด้วยพา ธ ไดเร็กทอรี:

python3 -m venv tutorial-env

สิ่งนี้จะสร้างtutorial-envไดเรกทอรีหากไม่มีอยู่และสร้างไดเรกทอรีภายในที่มีสำเนาของตัวแปล Python, ไลบรารีมาตรฐานและไฟล์สนับสนุนต่าง ๆ ...


สร้าง Python 3.7 venv [บน Python 3.8 ระบบปฏิบัติการ env / ระบบ]:

python3.7 -m venv ~/venv/py3.7      ## create Python 3.7-based venv
source ~/venv/py3.7/bin/activate    ## activate that venv
deactivate                          ## deactivate that venv (when done, there)

เพิ่มไปที่~/.bashrc:

alias p37='echo "   [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]" && source ~/venv/py3.7/bin/activate'

ทดสอบ Python 3.7 venv:

$ p37                                                                                                                 
[Python 3.7 venv (source ~/venv/py3.7/bin/activate)]

(py3.7)$ python --version
Python 3.7.4

(py3.7)$ python
Python 3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] 
>>>

1
นี่คือคำตอบที่ละเอียดมาก! :) ฉันพบปัญหานี้ทุกครั้งที่ฉันต้องการถ่ายโอนบางสิ่งจาก Arch Linux ไปยังระบบอื่น ๆ (เช่น Debian-ish)
Robbie Capps

1
@Victoria Stuart ขอบคุณมาก ๆ นี่คือสิ่งที่ฉันกำลังมองหา
daddyodevil

4

ในระบบย่อย windows สำหรับ linux:

  1. สร้างสภาพแวดล้อมสำหรับ python3:

    virtualenv --python=/usr/bin/python3 env
  2. เปิดใช้งาน:

    source env/bin/activate

3

บน windows:

py -3.4x32 -m venv venv34

หรือ

py -2.6.2 -m venv venv26

นี่ใช้pyตัวเรียกใช้งานซึ่งจะพบกับงูหลามที่เหมาะสมสำหรับคุณ (สมมติว่าคุณติดตั้งแล้ว)


3

ใช่คำตอบข้างต้นเป็นที่ถูกต้องและปรับการทำงานบนระบบปฏิบัติการยูนิกซ์ตามเช่นลินุกซ์และMAC OS X

ฉันพยายามสร้างvirtualenvสำหรับPython2 & Python3ด้วยคำสั่งต่อไปนี้

ที่นี่ฉันใช้venv2 & venv3เป็นชื่อของพวกเขาสำหรับPython2และPython3ตามลำดับ

Python2 »

MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/admin/venv2/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv2/bin/
activate        easy_install        pip2.7          python2.7
activate.csh        easy_install-2.7    python          wheel
activate.fish       pip         python-config
activate_this.py    pip2            python2
MacBook-Pro-2:~ admin$ 

Python3 »

MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/admin/venv3/bin/python3
Also creating executable in /Users/admin/venv3/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv3/bin/
activate        easy_install        pip3.6          python3.6
activate.csh        easy_install-3.6    python          wheel
activate.fish       pip         python-config
activate_this.py    pip3            python3
MacBook-Pro-2:~ admin$ 

ตรวจสอบตำแหน่งการติดตั้ง Python

MacBook-Pro-2:~ admin$ which python2
/usr/local/bin/python2
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ which python3
/usr/local/bin/python3
MacBook-Pro-2:~ admin$ 

2

มันใช้งานได้สำหรับฉัน

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3

2

ฉันใช้pyenvเพื่อจัดการเวอร์ชันหลามของฉัน

pyenv install 3.7.3
pyenv local 3.7.3

ตรวจสอบเวอร์ชั่นของหลาม:

$ python --version
Python 3.7.3

สร้างสภาพแวดล้อมเสมือนจริงด้วยvenv :

python -m venv .

จากนั้นเปิดใช้งานสภาพแวดล้อมเสมือนจริง:

source bin/activate

ตรวจสอบเวอร์ชั่นของหลาม:

$ python --version
Python 3.7.3

คุณอาจต้องลบสภาพแวดล้อมเสมือนก่อนหน้านี้

rm -rf bin

2

สิ่งเหล่านี้ดูเหมือนจะซับซ้อนเล็กน้อยสำหรับ Windows หากคุณใช้ Windows ที่ใช้ python 3.3 หรือใหม่กว่าคุณสามารถใช้ python launcher pyเพื่อทำสิ่งนี้ได้ง่ายขึ้น เพียงติดตั้งงูหลามรุ่นต่าง ๆ จากนั้นเรียกใช้:

py -[my version] -m venv env

สิ่งนี้จะสร้างสภาพแวดล้อมเสมือนจริงที่เรียกว่าenvในไดเรกทอรีปัจจุบันของคุณโดยใช้ไพ[my version]ธ อน ตัวอย่างเช่น:

py -3.7 -m venv env
./env/Scripts/activate

สิ่งนี้สร้างสภาพแวดล้อมเสมือนจริงที่เรียกว่าenvใช้ python3.7 และเปิดใช้งาน ไม่ต้องใช้พา ธ หรือสิ่งที่ซับซ้อนอื่น ๆ


มันควรจะเป็นpy -3.7 -m venv envแทน (ที่-mหายไป)?
sinoroc

ใช่แก้ไขในโพสต์!
Cole Smith


1

สำหรับระบบเดเบียน (เดเบียน 9) ในปี 2562 ฉันค้นพบวิธีแก้ปัญหาง่ายๆที่อาจแก้ไขปัญหาได้จากภายในสภาพแวดล้อมเสมือนจริง

สมมติว่าสภาพแวดล้อมเสมือนถูกสร้างขึ้นผ่าน:

python3.7 -m venv myenv

แต่มีรุ่นpython2และpython2.7เท่านั้นและคุณต้องการคุณสมบัติล่าสุดของ python3.7

จากนั้นเพียงเรียกใช้คำสั่ง:

(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/

จะเพิ่มแพ็คเกจ python3.7 หากมีอยู่ในระบบของคุณแล้ว


1

นี่เป็นข้อผิดพลาดกับ virtualenv เพียงแค่อัพเกรด pip ของคุณควรจะแก้ไข

pip install --upgrade virtualenv


1

ดังที่ได้กล่าวไปแล้วในหลายคำตอบการใช้virtualenvเป็นโซลูชั่นที่สะอาด อย่างไรก็ตามหลุมพรางเล็ก ๆ ที่ทุกคนควรระวังคือถ้า alias สำหรับ python ถูกตั้งค่าเป็นbash_aliasesเช่น:

python=python3.6

นามแฝงนี้จะถูกใช้ภายในสภาพแวดล้อมเสมือน ดังนั้นในสถานการณ์สมมตินี้ที่ทำงานpython -Vภายใน virtual env จะแสดงผลออกมาเสมอ3.6โดยไม่คำนึงถึงล่ามที่ใช้ในการสร้างสภาพแวดล้อม:

virtualenv venv --python=pythonX.X

0

มันทำงานได้สำหรับฉันบน windows ด้วยการติดตั้ง python 2:

  1. ขั้นตอนที่ 1: ติดตั้ง python 3 เวอร์ชั่น
  2. ขั้นตอนที่ 2: สร้างโฟลเดอร์ env สำหรับสภาพแวดล้อมเสมือน
  3. ขั้นตอนที่ 3: c: \ Python37 \ python -m venv c: \ path \ to \ env

นี่คือวิธีที่ฉันสร้างสภาพแวดล้อมเสมือน Python 3 ในการติดตั้ง python 2 ที่มีอยู่ของฉัน



0

ใช่คุณเพียงแค่ต้องติดตั้ง python เวอร์ชันอื่นและกำหนดตำแหน่งของ python เวอร์ชันอื่นในคำสั่งของคุณเช่น:

virtualenv / home / payroll / Documents / env -p / usr / bin / python3


0

นี่คือ stepbystep วิธีการสร้างสภาพแวดล้อมเสมือนจริงในโฟลเดอร์รหัส Visual Studio: ฉันใช้ Powershell (โหมดผู้ดูแลระบบ):
1. ฉันสร้างโฟลเดอร์ VSCode - "D: \ Code_Python_VE" ที่ฉันต้องการสร้างสภาพแวดล้อมเสมือน
2. ถัดไปฉันพิมพ์คำสั่ง - "pip3 install virtualenv" (D: \ Code_Python_VE> pip3 ติดตั้ง virtualenv) 3. D: \ Code_Python_VE> python3 -m venv project_env
4. D: \ Code_Python_VE> project_env \ Scripts
\ activ.bat 5. D: \ Code_Python_VE> ls - นี่จะเป็นรายการใหม่ ไดเรกทอรี "project_env"
6. D: \ Code_Python_VE> รหัส นี่จะเริ่มรหัส Visual Studio ตรวจสอบให้แน่ใจว่าคำสั่งคือ (รหัส)
7. สร้าง launch.jason โดยมีเนื้อหาดังต่อไปนี้:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "python",
            "request": "launch",
            "name": "Python: Current File (Integrated Terminal 1)",
            "program": "${file}"
        },
        {
            "name": "Python: Current File (Integrated Terminal 2)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }
    ]
}

(โปรดค้นหาวิธีไปที่หน้าต่างแก้ไขข้อบกพร่องและเพิ่มการกำหนดค่าใหม่ในรหัส VS)

  1. กด F1 ในรหัส Visual Studio และพาเลทคำสั่งจะเปิดขึ้น - เลือก Python Interpreter และเลือกสภาพแวดล้อมเสมือน project_env
  2. เพิ่มไฟล์ test.py โดยพิมพ์ใบแจ้งยอดเดียว ("Hello World")
  3. เรียกใช้โปรแกรมนี้
  4. ในเทอร์มินัล Visual Studio Code -
    (project_env) d: \ Code_Python_VE> python -m การติดตั้ง pip - อัปเกรด
    ฉันหวังว่านี่จะช่วยได้

-2

UBUNTU 19.04 / Global Python 3.7

สิ่งนี้ใช้ได้สำหรับฉันการเปิดใช้งานสภาพแวดล้อม Python 3.8 โดยใช้ venv ที่แนะนำสำหรับการพัฒนา python 3

ติดตั้งโมดูล venv 3.8 และ 3.8

$ sudo apt ติดตั้ง python3.8 python3.8-venv ## รวมถึงโมดูลอื่น ๆ ที่คุณต้องการ

สร้าง Virtual Env ของคุณโดยใช้เวอร์ชันหลามที่คุณต้องการใน env นั้น

$ /usr/bin/python3.8 -m venv python38-env

เปลี่ยนเป็น env เสมือนของคุณ

$ source python38-env / bin / เปิดใช้งาน

python -V = python 3.8

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.