ใช้ Python 3 ใน virtualenv


780

การใช้virtualenvฉันใช้งานโครงการของฉันด้วย Python (2.7) เวอร์ชันเริ่มต้น ในโครงการหนึ่งฉันต้องใช้ Python 3.4

ฉันเคยbrew install python3ติดตั้งลงบน Mac ของฉัน ตอนนี้ฉันจะสร้าง virtualenv ที่ใช้รุ่นใหม่ได้อย่างไร

เช่น sudo virtualenv envPython3

ถ้าฉันลอง:

virtualenv -p python3 test

ฉันเข้าใจ:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
    import os
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
    from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable

1
คุณลองอัปเดตล่ามเฉพาะในสภาพแวดล้อมปัจจุบันของคุณหรือคุณเพิ่งตัดสินใจที่จะเริ่มต้นจากศูนย์?
Charlie Parker

เป็นไปได้หรือไม่ที่จะติดตั้ง python3 ในสภาพแวดล้อมเสมือนโดยไม่ต้องอัพเดตระบบ python (เก็บไว้ใน python2.x) บน mac?
Jun

คำตอบ:


1386

เพียงแค่เรียกใช้

virtualenv -p python3 envname

อัปเดตหลังจากแก้ไขของ OP:

มีข้อผิดพลาดในรุ่น OP ของ virtualenv เป็นตามที่อธิบายไว้ที่นี่ ปัญหาได้รับการแก้ไขโดยการเรียกใช้:

pip install --upgrade virtualenv

17
การอัพเกรด virtualenv ใช้งานได้ แต่ด้วยเหตุผลบางอย่างฉันต้องมีความชัดเจนเกี่ยวกับ python3 ที่สามารถเรียกใช้งานได้ด้วยvirtualenv -p $(which python3) envname
dkamins

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

ใน Raspbian Jessie 'virtualenv --no-site-packages python3.4' ใช้งานได้ - การแจกจ่ายเลิกใช้แล้วและ -p ไม่จำเป็นเนื่องจาก virtualenv ใช้ python3
alkopop79

ทำไมหลังจากทำงานvirtualenv -p python3 my_virtual_envแล้วpython3สามารถเข้าถึงได้จากภายนอกสภาพแวดล้อมเสมือนจริงด้วยหรือไม่
Bishwas Mishra

@CharlieParker คุณสามารถดำเนินการดังต่อไปนี้ขั้นตอนที่สองในลำดับที่ 1. ลบbin, lib, include, localและshareไดเรกทอรีในไดเรกทอรีรากโครงการของคุณ 2. ในการรันเทอร์มินัล: virtualenv -p python3 .ซึ่งเริ่มต้น Python3 virtualenv ใหม่ในไดเรกทอรีปัจจุบัน
Calleniah

251

งูหลาม 3 มีการสนับสนุนในตัวสำหรับสภาพแวดล้อมเสมือนจริง - venv มันอาจจะดีกว่าที่จะใช้สิ่งนั้นแทน หมายถึงเอกสาร:

การสร้างสภาพแวดล้อมเสมือนจริงทำได้โดยการเรียกใช้สคริปต์ pyvenv:

pyvenv /path/to/new/virtual/environment

อัปเดตสำหรับ Python 3.6 และใหม่กว่า:

ในฐานะที่เป็นpawciobielอย่างถูกต้องแสดงความคิดเห็น , pyvenvจะเลิกเป็นของงูใหญ่ 3.6 และวิธีการใหม่คือ

python3 -m venv /path/to/new/virtual/environment

2
ฉันหวังว่าคุณถูกต้องเพราะฉันเพิ่งออกจาก virtualenv เพื่อทำงานกับ pyenv พร้อมกับ python 3.5.2
Jayesh

1
ฉันไม่พบข้อมูลใด ๆ ที่ยืนยันข้อกังวลเกี่ยวกับสถานที่ตั้ง relocatable ถูกลบออกเป็นตัวเลือก .... ตอนนี้มันไม่จำเป็นหรือไม่? วิธีแก้ปัญหาของพวกเขาคืออะไร? หรือเป็นเพียงตอนนี้ไร้ประโยชน์อย่างสมบูรณ์เพื่อเตรียมแอป?
JM Becker

7
แน่นอน แต่คุณสามารถเรียกใช้: python3 -m venv /path/v3เนื่องจากสคริปต์ pyvenv เลิกใช้แล้วใน Python 3.6
pawciobiel

4
ใช้ anaconda python 3.6 ล่าสุดบน mac และpython3 -m venv /path/v3ข้อผิดพลาดที่นี่ Error: Command '['/path/v3/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exitฉันพลาดอะไรไปรึเปล่า? ด้วย--without-pipตัวเลือกอย่างน้อยสร้าง venv ด้วยการเปิดใช้งาน / ปิดการใช้งานสคริปต์อย่างถูกต้อง
monkut

3
ทุกคนทราบวิธีเปิดใช้งาน python3.6 -m venv <venvname> ไม่มีสคริปต์ / ในไดเรกทอรีที่สร้างขึ้นและ "เปิดใช้งาน" ใน bin / subdir
เชน

60

ฉันได้ลองpyenvแล้วและมันก็มีประโยชน์มากสำหรับการสลับเวอร์ชั่นไพ ธ อน (โกลบอล, โลคัลในโฟลเดอร์หรือใน virtualenv)

brew install pyenv

จากนั้นติดตั้ง Python version ที่คุณต้องการ:

pyenv install 3.5.0

และสร้าง virtualenv พร้อมพา ธ ไปยังรุ่นล่ามที่ต้องการ:

virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv

แค่นั้นให้ตรวจสอบเวอร์ชั่น:

. ./myenv/bin/activate && python -V

นอกจากนี้ยังมีปลั๊กอินสำหรับ pyenv pyenv-virtualenvแต่มันก็ไม่ได้ผลสำหรับฉันอย่างใด


ดูเหมือนว่าวิธีการของคุณต้องการสร้างสภาพแวดล้อมหลามใหม่ pyenv สามารถทำงานกับ virtualenv และเปลี่ยนเวอร์ชัน python ของฉันได้อย่างง่ายดายทุกครั้งที่ฉันต้องการหรือไม่
Charlie Parker

58

ติดตั้งข้อกำหนดเบื้องต้น

sudo apt-get install python3 python3-pip virtualenvwrapper

สร้างสภาพแวดล้อมเสมือนที่ใช้ Python3 เปิดใช้งานทางเลือกตั้ง--system-site-packagesค่าสถานะ

mkvirtualenv -p /usr/bin/python3 <venv-name>

ตั้งเป็นสภาพแวดล้อมเสมือนจริง

workon <venv-name>

ติดตั้งข้อกำหนดอื่น ๆ โดยใช้pipตัวจัดการแพ็คเกจ

pip install -r requirements.txt
pip install <package_name>

เมื่อทำงานกับโครงการหลามหลายโครงการพร้อมกันโดยปกติจะแนะนำให้ติดตั้งแพ็คเกจทั่วไปเช่นส่วนกลางpdbppแล้วนำกลับมาใช้ใหม่ใน virtualenvs

การใช้เทคนิคนี้ช่วยประหยัดเวลาในการดึงแพ็คเกจและติดตั้งแพคเกจนอกเหนือจากการใช้พื้นที่ดิสก์และแบนด์วิธเครือข่ายน้อยที่สุด

sudo -H pip3 -v install pdbpp
mkvirtualenv -p $(which python3) --system-site-packages <venv-name>

คำแนะนำเฉพาะของ Django

หากมีแพ็คเกจหลามทั้งระบบจำนวนมากแนะนำให้อย่าใช้--system-site-packagesแฟล็กโดยเฉพาะในระหว่างการพัฒนาเนื่องจากฉันสังเกตเห็นว่ามันทำให้การเริ่มต้นของช้าลงมากขึ้น Django ฉันคิดว่าการเริ่มต้นสภาพแวดล้อม Django กำลังสแกนและผนวกแพคเกจไซต์ทั้งหมดด้วยตนเองจากเส้นทางของระบบซึ่งอาจเป็นสาเหตุ แม้python manage.py shellจะช้ามาก

ต้องบอกว่าการทดสอบว่าตัวเลือกใดทำงานได้ดีกว่า อาจจะปลอดภัยเพียงแค่ข้าม--system-site-packagesธงสำหรับโครงการ Django


1
ฉันใช้สิ่งนี้กับ OSX มันใช้งานได้ (ยกเว้นไม่ได้ใช้apt-getแต่brew)
sdkks

38
virtualenv --python=/usr/bin/python3 <name of env>

ทำงานให้ฉัน


ฉันลองแล้ว แต่มีการพูดThe executable python3 (from --python=python3) does not existคุณจะทำอย่างไร ฉันต้องการที่จะชง islall python3 แต่ก็ไม่แน่ใจว่าเป็นความคิดที่ดีหรือหากระบบของฉันจะสับสนว่าฉันใช้ python เวอร์ชันใด
Charlie Parker

ใช้งานได้อย่างมีเสน่ห์ใน Ubuntu 16.04!
Eric Vieira

20

คุณสามารถระบุเวอร์ชันของ Pythonที่เจาะจงได้ในขณะที่สร้างสภาพแวดล้อม
มันถูกกล่าวถึงในvirtualenv.py

virtualenv --python=python3.5 envname

ในบางกรณีสิ่งนี้จะต้องเป็นเส้นทางแบบเต็มไปยังปฏิบัติการได้:

virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname

วิธี-pการทำงาน

parser.add_option(
    '-p', '--python',
    dest='python',
    metavar='PYTHON_EXE',
    help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
    'interpreter to create the new environment.  The default is the interpreter that '
    'virtualenv was installed with (%s)' % sys.executable)

นี่คือคำตอบที่ดีที่สุดที่นี่
ถ่านหิน

14

ฉันมีERRORข้อความเดียวกัน โซลูชันของ tbrisker ไม่ทำงานในกรณีของฉัน แต่สิ่งนี้สามารถแก้ไขปัญหาได้:

$ python3 -m venv .env

13

นี่คือทั้งหมดที่คุณต้องการเพื่อเรียกใช้สภาพแวดล้อมเสมือนใน python / python3

ก่อนอื่นถ้าvirtualenvไม่ได้ติดตั้งให้รัน

pip3 install virtualenv 

ตอนนี้ทำงาน:

virtualenv -p python3 <env name> 

บางครั้งคำสั่ง cmd virtualenvล้มเหลวหากเป็นเช่นนั้นให้ใช้สิ่งนี้:

python3 -m virtualenv <env_name>  # you can specify full path instead <env_name> to install the file in a different location other than the current location

ตอนนี้เปิดใช้งาน env เสมือนจริง:

source <env_name>/bin/activate

หรือ:

source `pwd`/<env_name>/bin/activate

ตอนนี้ทำงาน

which python

คุณควรเห็นเส้นทางเต็มไปยัง dir และ<env_name>/bin/pythonคำต่อท้ายของคุณ

ในการออกจาก virtualenv ให้รัน:

deactivate 

8

Python มาพร้อมกับสภาพแวดล้อมเสมือนจริงของตัวเองโดยใช้ชื่อว่า "venv" ฉันอยากจะแนะนำให้ใช้แทน virtualenv

ข้อความจากvenv - เอกสาร ,

เลิกใช้ตั้งแต่รุ่น 3.6: pyvenv เป็นเครื่องมือที่แนะนำสำหรับการสร้างสภาพแวดล้อมเสมือนจริงสำหรับ Python 3.3 และ 3.4 และเลิกใช้แล้วใน Python 3.6

เปลี่ยนเป็นเวอร์ชั่น 3.5: ตอนนี้แนะนำให้ใช้ venv เพื่อสร้างสภาพแวดล้อมเสมือน

สำหรับ windows เพื่อเริ่มต้น venv ในบางโครงการให้เปิด cmd:

python -m venv "c:\path\to\myenv"

(ขอแนะนำให้ใช้เครื่องหมายคำพูดคู่รอบเส้นทางไดเรกทอรีหากมีช่องว่างใด ๆ Ex: "C: / My Dox / Spaced Directory / Something")

เมื่อติดตั้ง venv แล้วคุณจะเห็นโฟลเดอร์ใหม่บางอันอยู่ในไดเรกทอรีโครงการของคุณ หนึ่งในนั้นคือ "สคริปต์"

ในการเปิดใช้งานหรือเรียกใช้ venv คุณต้อง:

C:\> <venv>\Scripts\activate.bat

คุณสามารถปิดการใช้งานสภาพแวดล้อมเสมือนได้โดยพิมพ์“ deactivate” ในเชลล์ของคุณ ด้วยสิ่งนี้คุณพร้อมที่จะติดตั้งไลบรารีเฉพาะโครงการของคุณแล้วซึ่งจะอยู่ภายใต้โฟลเดอร์ "Lib"

================================ แก้ไข 1 ================ ==================== สถานการณ์ที่จะกล่าวถึงด้านล่างไม่ใช่สิ่งที่ถามมา แต่เดิมเพิ่มในกรณีที่มีคนใช้ vscode พร้อมกับส่วนขยายหลาม

ในกรณีที่คุณใช้รหัส vs กับส่วนขยายหลามคุณอาจประสบปัญหากับ pylint ซึ่งชี้ไปที่การติดตั้งทั่วโลก ในกรณีนี้ไพลินจะไม่สามารถเห็นโมดูลที่ติดตั้งในสภาพแวดล้อมเสมือนจริงของคุณและด้วยเหตุนี้จะแสดงข้อผิดพลาดขณะนำเข้า

นี่เป็นวิธีง่าย ๆ ในการผ่านสิ่งนี้

cd Workspace\Scripts
.\Activate.ps1
code .

โดยทั่วไปเราจะเปิดใช้งานสภาพแวดล้อมก่อนแล้วจึงเรียกใช้ vs-code เพื่อให้ pylint เริ่มต้นภายในสภาพแวดล้อมและสามารถมองเห็นแพ็คเกจภายในเครื่องทั้งหมด


ฉันใช้virtualenvสำหรับการใช้งานสภาพแวดล้อมเสมือนจริง ( workonฯลฯ ) แบบวันต่อวันแต่สำหรับการสร้างสภาพแวดล้อมเสมือนจริงที่เชื่อถือได้ในpython3.xวิธีนี้เป็นวิธีเดียวที่ฉันพบว่าทำงานได้
Bobble

6

นอกจากคำตอบอื่น ๆ ฉันขอแนะนำให้ตรวจสอบอินสแตนซ์ของ virtualenv ที่คุณกำลังเรียกใช้:

which virtualenv

หากสิ่งนี้ปรากฏขึ้นใน / usr / local / bin อาจเป็นไปได้ว่าคุณติดตั้ง virtualenv (อาจใช้อินสแตนซ์ของ easy_tools หรือ pip) โดยไม่ต้องใช้ตัวจัดการแพคเกจระบบของคุณ (ชงในกรณีของ OP) นี่เป็นปัญหาของฉัน

หลายปีที่ผ่านมา - เมื่อฉันไม่รู้มากขึ้น - ฉันได้ติดตั้ง virtualenv และมันปิดบัง virtualenv ที่มากับแพ็คเกจของระบบของฉัน

หลังจากลบ virtualenv ตัวเก่าที่ชำรุดปัญหาของฉันก็หายไป


6

ใน python3.6 ฉันพยายาม python3 -m venv myenvตามเอกสาร แต่มันใช้เวลานานมาก ดังนั้นคำสั่งที่ง่ายและรวดเร็วมาก python -m venv yourenv มันใช้งานได้กับ python3.6


5

สำหรับ Mac ฉันต้องทำสิ่งต่อไปนี้เพื่อให้มันใช้งานได้

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

เพื่อค้นหาสิ่งที่รุ่นหลามที่คุณต้องการคือการใช้สถานที่which python2.7หรือwhich python3.5หรือwhich python3.6แล้วแทนที่เกี่ยวกับ--python=DIRECTORY
Santhosh

3

หากคุณติดตั้ง python3 ( brew install python3) พร้อมกับvirtualenv burritoคุณสามารถทำได้ mkvirtualenv -p $(which python3) env_name

แน่นอนฉันรู้ว่า virtualenv burrito เป็นเพียงเสื้อคลุม แต่มันให้บริการฉันได้ดีในช่วงหลายปีที่ผ่านมาลดความโค้งการเรียนรู้บางอย่าง


3

virtualenv --python=/usr/local/bin/python3 <VIRTUAL ENV NAME> สิ่งนี้จะเพิ่ม เส้นทางpython3สำหรับสภาพแวดล้อมเสมือนของคุณ



2

สำหรับผู้ที่มีปัญหาขณะทำงานกับ Anaconda3 (Python 3)

คุณสามารถใช้

conda create -n name_of_your_virtualenv python=python_version 

เพื่อเปิดใช้งานสภาพแวดล้อม (Linux, MacOS)

source activate name_of_your_virtualenv

สำหรับ Windows

activate name_of_your_virtualenv

1

ฉันลองทุกสิ่งข้างต้นแล้ว แต่ก็ยังไม่ทำงาน ดังนั้นในฐานะสัตว์เดรัจฉานฉันเพิ่งติดตั้งอนาคอนด้าติดตั้งเวอร์ชวลเนวีอีกครั้ง ... และมันก็ใช้งานได้

Amans-MacBook-Pro:~ amanmadan$ pip install virtualenv
You are using pip version 6.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting virtualenv
  Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB)
    100% |████████████████████████████████| 3.5MB 114kB/s 
Installing collected packages: virtualenv
Successfully installed virtualenv-15.0.3
Amans-MacBook-Pro:python amanmadan$ virtualenv my_env
New python executable in /Users/amanmadan/Documents/HadoopStuff/python/my_env/bin/python
Installing setuptools, pip, wheel...done.
Amans-MacBook-Pro:python amanmadan$ 

1

ฉันต้องการให้ python 2.7.5 เป็นเวอร์ชันเริ่มต้นบน Centos 7 แต่มี python 3.6.1 ในสภาพแวดล้อมเสมือนจริงที่ทำงานควบคู่ไปกับสภาพแวดล้อมเสมือนอื่นใน python 2.x

ฉันพบลิงค์ด้านล่างเป็นทางออกที่ดีที่สุดสำหรับงูใหญ่รุ่นล่าสุด (python 3.6.1) https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming -environment สำหรับหลาม-3 มันแสดงขั้นตอนสำหรับแพลตฟอร์มที่แตกต่างกัน แต่ขั้นตอนพื้นฐานคือ

  1. ติดตั้ง python3.x (หากไม่มี) สำหรับแพลตฟอร์มของคุณ
  2. ติดตั้ง python3.x-devel สำหรับแพลตฟอร์มของคุณ
  3. สร้างสภาพแวดล้อมเสมือนจริงใน python 3.x (เช่น $ python3.6 -m venv virenv_test_p3 /)
  4. เปิดใช้งานสภาพแวดล้อมการทดสอบสำหรับ python 3.x (เช่น source virenv_test_p3 / bin / เปิดใช้งาน)
  5. ติดตั้งแพ็กเกจที่คุณต้องการใช้ในสภาพแวดล้อมเสมือน python 3 ใหม่และรองรับ (เช่น pip install Django == 1.11.2)

1

คำสั่งง่ายๆด้านล่างสามารถสร้าง env เสมือนพร้อมเวอร์ชั่น 3.5

apt-get install python3-venv

python3.5 -m venv <your env name>

ถ้าคุณต้องการรุ่น env เสมือนเป็น 3.6

python3.6 -m venv <your env name>


0

ฉันได้รับข้อผิดพลาดเดียวกันเนื่องจากมันเป็นข้อขัดแย้งกับ miniconda3 ติดตั้งดังนั้นเมื่อคุณพิมพ์ "virtualenv ที่" และถ้าคุณติดตั้ง miniconda และมันชี้ไปที่การติดตั้งนั้นคุณสามารถลบมันได้ (ถ้าคุณชอบฉันและไม่ได้ย้าย เป็น) หรือเปลี่ยนตัวแปรสภาพแวดล้อมของคุณเพื่อชี้ไปที่การติดตั้งที่คุณต้องการ


0

บนบรรทัดรับคำสั่งของ Windows สิ่งต่อไปนี้ใช้ได้สำหรับฉัน ขั้นแรกให้ค้นหาว่าไฟล์ไพ ธ อนของคุณอยู่ที่ใด:

where python

สิ่งนี้จะแสดงเส้นทางไปยัง python.exe ที่แตกต่างกันบนระบบของคุณ นี่คือของฉัน:

C:\Users\carandangc\Anaconda3\python.exe
C:\Python27\python.exe

ดังนั้นสำหรับ Python3 นี่ตั้งอยู่ในเส้นทางแรกสำหรับฉันดังนั้นฉัน cd ไปที่โฟลเดอร์รูทของแอปพลิเคชันที่ฉันต้องการสร้างโฟลเดอร์สภาพแวดล้อมเสมือน จากนั้นฉันเรียกใช้สิ่งต่อไปนี้ซึ่งรวมถึงพา ธ ไปยังโปรแกรมปฏิบัติการ Python3 ของฉันตั้งชื่อสภาพแวดล้อมเสมือนจริงของฉันว่า 'venv':

virtualenv --python=/Users/carandangc/Anaconda3/python.exe venv

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

call venv\Scripts\activate.bat

สุดท้ายติดตั้งการพึ่งพาสำหรับสภาพแวดล้อมเสมือนจริงนี้:

pip install -r requirements.txt

ความต้องการ.txtนี้สามารถเติมด้วยตนเองได้หากคุณทราบว่าไลบรารี / โมดูลที่จำเป็นสำหรับแอปพลิเคชันของคุณในสภาพแวดล้อมเสมือน หากคุณมีแอปพลิเคชันที่ทำงานในสภาพแวดล้อมอื่นคุณสามารถสร้างการอ้างอิงโดยอัตโนมัติโดยการเรียกใช้สิ่งต่อไปนี้ (cd ไปที่โฟลเดอร์แอปพลิเคชันในสภาพแวดล้อมที่มันทำงาน):

pip freeze > requirements.txt

จากนั้นเมื่อคุณมี requirements.txt ที่คุณมี 'ถูกตรึง' จากนั้นคุณสามารถติดตั้งข้อกำหนดในเครื่องอื่นหรือสภาพแวดล้อมที่สะอาดด้วยต่อไปนี้ (หลังจาก cd ไปยังโฟลเดอร์แอปพลิเคชัน):

pip install -r requirements.txt

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

python --version

จากนั้น voila ... คุณทำให้ Python3 ของคุณทำงานในสภาพแวดล้อมเสมือนจริงของคุณ เอาท์พุทสำหรับฉัน:

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