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)