virtualenv
ช่วยให้คุณสร้างการติดตั้ง Python ที่กำหนดเองเช่นในไดเรกทอรีย่อยของโครงการของคุณ แต่ละโครงการของคุณสามารถมีของตัวเองpython
(หรือหลาย ๆ โครงการ) ภายใต้ virtualenv ที่เกี่ยวข้อง มันเป็นสิ่งที่ดีอย่างสมบูรณ์แบบสำหรับ virtualenv บางคน / ทุกคนที่มีแม้กระทั่งรุ่นเดียวกันpython
(เช่น 2.7.16) โดยไม่มีข้อขัดแย้ง - พวกมันอยู่แยกกันและไม่รู้ซึ่งกันและกัน หากคุณต้องการใช้สิ่งเหล่าpython
นี้คุณต้องดำเนินการactivate
(โดยเรียกใช้สคริปต์ซึ่งจะแก้ไขของคุณชั่วคราวPATH
เพื่อให้แน่ใจว่าbin/
ไดเรกทอรีของ virtualenv มาก่อน) จากจุดนั้นการโทรpython
(หรือpip
อื่น ๆ ) จะเรียกใช้เวอร์ชัน virtualenv นั้นจนกว่าคุณdeactivate
จะ (เรียกคืนPATH
)
pyenv
ทำงานในระดับที่กว้างกว่าvirtualenv
- มันมีการลงทะเบียนการติดตั้ง Python (และสามารถใช้ในการติดตั้งใหม่) และช่วยให้คุณสามารถกำหนดเวอร์ชันของ Python ที่จะทำงานเมื่อคุณใช้python
คำสั่ง ฟังดูคล้ายกัน แต่การใช้งานจริงแตกต่างกันเล็กน้อย มันทำงานได้โดยการเพิ่มpython
สคริปต์shim ให้กับคุณPATH
(อย่างถาวร) แล้วตัดสินใจว่าpython
จะเรียกใช้"ของจริง" แบบใด คุณยังสามารถกำหนดค่า pyenv เพื่อโทรหาหนึ่งใน virtualenv pythons ของคุณ (โดยใช้pyenv-virtualenv
ปลั๊กอิน) Python เวอร์ชันที่คุณติดตั้งโดยใช้pyenv
เข้าไปใน$(pyenv root)/versions/
ไดเรกทอรี (โดยค่าเริ่มต้น pyenv root คือ ~ / .pyenv) ดังนั้นจะมี 'global' มากกว่า virtualenv ตามปกติแล้วคุณไม่สามารถติดตั้ง Python เวอร์ชั่นซ้ำ ๆ กันได้pyenv
อย่างน้อยการทำเช่นนั้นไม่ใช่แนวคิดหลัก
ในการสร้าง virtualenv ด้วย Python เวอร์ชั่นที่เฉพาะเจาะจงคุณจะต้องมีรุ่นนั้นอยู่ในระบบของคุณ (ไม่ว่าจะอยู่ในนั้นPATH
หรือไม่ก็ตาม) และทำการโคลนเข้าไปใน virtualenv ที่สร้างขึ้นใหม่ของคุณ pyenv
แน่นอนวิธีหนึ่งที่จะขอรับรุ่นโดยเฉพาะอย่างยิ่งคือการติดตั้งผ่านทาง เมื่อทำเสร็จแล้ว virtualenvs แต่ละตัวสามารถแยกออกได้โดยการติดตั้งโมดูล (หรือรุ่นต่าง ๆ ) ลงในพวกเขา
ในระยะสั้น:
virtualenv
อนุญาตให้คุณสร้างการติดตั้งไพ ธ อนแบบโลคัลโดยการโคลนจากสิ่งที่มีอยู่
pyenv
อนุญาตให้คุณติดตั้งงูหลามรุ่นต่าง ๆ พร้อมกัน (ทั้งระบบหรือเฉพาะผู้ใช้ในพื้นที่) จากนั้นเลือกไพ ธ อนจำนวนมากที่จะเรียกใช้ในเวลาใดก็ตาม (รวมถึงที่สร้างโดย virtualenv หรือ Anaconda)