Virtualenvwrapper และ Python 3


119

ฉันติดตั้ง python 3.3.1 บน ubuntu lucid และสร้าง Virtualenv สำเร็จดังต่อไปนี้

virtualenv envpy331 --python=/usr/local/bin/python3.3

สิ่งนี้สร้างโฟลเดอร์envpy331บน dir บ้านของฉัน

ฉันได้virtualenvwrapperติดตั้งแล้วด้วย แต่ในเอกสารรองรับเฉพาะ2.4-2.7เวอร์ชันเท่านั้น .. pythonมีใครพยายามจัดระเบียบpython3Virtualenv หรือไม่? ถ้ามีช่วยบอกวิธีหน่อยได้ไหม


1
ปัญหาคือ pip ยังคงเป็น python2 pip ไม่ใช่เหรอ? ฉันคิดว่าสิ่งที่คุณต้องการคือ Virtualenvwrapper เพื่อใช้pyvenvแทนvirtualenv
erikbwork

คำตอบ:



240

หากคุณติดตั้ง python3 ไว้แล้วด้วยเช่นกัน Virtualenvwrapper สิ่งเดียวที่คุณต้องทำเพื่อใช้ python3 กับสภาพแวดล้อมเสมือนคือการสร้างสภาพแวดล้อมโดยใช้:

which python3 #Output: /usr/bin/python3
mkvirtualenv --python=/usr/bin/python3 nameOfEnvironment

หรือ (อย่างน้อยใน OSX โดยใช้การชง):

mkvirtualenv --python=`which python3` nameOfEnvironment

เริ่มใช้สภาพแวดล้อมและคุณจะเห็นว่าทันทีที่คุณพิมพ์ python คุณจะเริ่มใช้ python3


12
ไม่ค่อยได้ผลสำหรับฉันบน OSX ที่ติดตั้ง 2.7.8 และ 3.4.1 เคียงข้างกันผ่านการชง การแก้ไขเป็น "mkvirtualenv --python =" ซึ่ง python3` nameOfEnvironment "ทำงานได้อย่างสมบูรณ์แบบ
Chris Doggett

@ChrisDoggett เหมือนกันบน Ubuntu 14.10
z0r

4
บน Ubuntu คำสั่งจะเป็น: mkvirtualenv --python = / usr / bin / python3 your-env-name
Vasiliy Toporov

2
หากคุณใช้ bash คุณสามารถทำการเปลี่ยนตัวเพื่อบันทึกเส้น -mkvirtualenv --python=$(which python3) nameOfEnvironment
d4nyll

สิ่งที่ยอดเยี่ยมจริงๆคือการสร้างนามแฝง bash ต่อไปนี้alias mkvirtualenv3="mkvirtualenv --python=$(which python3.6)"- จากนั้นก็สร้าง Virtualenvs สำหรับ python 2 หรือ 3 ได้อย่างง่ายดาย
robertmoggach

52

คุณสามารถสร้าง Virtualenvwrapper โดยใช้ไบนารี Python ที่กำหนดเองแทนที่จะรันด้วย Virtualenvwrapper ในการทำเช่นนั้นคุณต้องใช้ตัวแปร VIRTUALENV_PYTHON ซึ่งใช้โดย Virtualenv:

$ export VIRTUALENV_PYTHON=/usr/bin/python3
$ mkvirtualenv -a myproject myenv
Running virtualenv with interpreter /usr/bin/python3
New python executable in myenv/bin/python3
Also creating executable in myenv/bin/python
(myenv)$ python
Python 3.2.3 (default, Oct 19 2012, 19:53:16) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

2
สิ่งนี้ล้าสมัยอย่างมีประสิทธิภาพ แทนที่จะตั้งค่าตัวแปรสภาพแวดล้อมคุณควรใช้ --python พารามิเตอร์ที่โจนาธานแนะนำในปัจจุบัน
AlexLordThorsen

6
@Rawrgulmuffins ทำไม? ซึ่งจะป้องกันไม่ให้ระบุเวอร์ชัน python สำหรับ env ใหม่แต่ละรายการ
Joost

@ Joost นั่นเป็นจุดที่ยุติธรรม โดยส่วนตัวแล้วฉันรู้สึกว่านั่นเป็นข้อเสีย แต่ฉันเห็นได้ว่าทำไมคนถึงชอบแบบนั้น
AlexLordThorsen

21

Virtualenvwrapper ตอนนี้ให้คุณระบุ python ที่เรียกใช้งานได้โดยไม่มีพา ธ

ดังนั้น (อย่างน้อยบน OSX) mkvirtualenv --python=python3 nameOfEnvironmentก็เพียงพอแล้ว


2
ต้องการสองขีด จะแก้ไข แต่ SE ต้องการ 6 อักขระและการเปลี่ยนแปลงต้องการเพียงตัวเดียว
jwogrady

20

บน Ubuntu; ใช้mkvirtualenv -p python3 env_nameโหลด Virtualenv ด้วย python3

ภายใน env ใช้python --versionเพื่อตรวจสอบ


1
python --versionเพื่อแสดงเวอร์ชัน
Dos

20

คุณสามารถเพิ่มสิ่งนี้ใน. bash_profile หรือที่คล้ายกันของคุณ:

alias mkvirtualenv3='mkvirtualenv --python=`which python3`'

จากนั้นใช้mkvirtualenv3แทนmkvirtualenvเมื่อคุณต้องการสร้างสภาพแวดล้อม python 3


13

ฉันพบว่าการทำงาน

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

และ

export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv-3.4

ในบรรทัดคำสั่งบน Ubuntu บังคับให้ mkvirtualenv ใช้ python3 และ Virtualenv-3.4 หนึ่งยังคงต้องทำ

mkvirtualenv --python=/usr/bin/python3 nameOfEnvironment

เพื่อสร้างสิ่งแวดล้อม นี่สมมติว่าคุณมี python3 ใน / usr / bin / python3 และ Virtualenv-3.4 ใน /usr/local/bin/virtualenv-3.4


เพียงใช้which python2.4หรือwhich python3.5หรือwhich python3.6เพื่อค้นหาไดเรกทอรีสำหรับ--python=DIRECTORY
Santhosh


0

ฉันเพิ่มสิ่งนี้export VIRTUALENV_PYTHON=/usr/bin/python3ของฉัน~/.bashrc:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENV_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

จากนั้นเรียกใช้ source .bashrc

และคุณสามารถระบุเวอร์ชัน python สำหรับ env ใหม่แต่ละรายการได้ mkvirtualenv --python=python2 env_name

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