เปลี่ยนกลับตัวเลือก "--no-site-Packages` ด้วย Virtualenv


126

ฉันได้สร้าง Virtualenv โดยใช้--no-site-packagesตัวเลือกและติดตั้งไลบรารีจำนวนมาก ตอนนี้ฉันต้องการเปลี่ยนกลับ--no-site-packagesตัวเลือกและใช้แพ็คเกจส่วนกลาง

ฉันสามารถทำได้โดยไม่ต้องสร้าง Virtualenv ขึ้นใหม่หรือไม่?

อย่างแม่นยำมากขึ้น:

ฉันสงสัยว่าจะเกิดอะไรขึ้นเมื่อสร้าง Virtualenv โดยใช้--no-site-packagesตัวเลือกซึ่งต่างจากการไม่ใช้ตัวเลือกนั้น

ถ้าฉันรู้ว่าเกิดอะไรขึ้นฉันจะหาวิธีเลิกทำได้


คำถามอื่นถูกทำเครื่องหมายว่าซ้ำกับคำถามนี้และได้รับคำตอบที่น่าสนใจเช่นกัน
mariotomo

คำตอบ:


162

ลองลบ (หรือเปลี่ยนชื่อ) ไฟล์no-global-site-packages.txtในLibโฟลเดอร์ของคุณภายใต้สภาพแวดล้อมเสมือนของคุณ

โดยvenvเป็นชื่อของสภาพแวดล้อมเสมือนของคุณและpython3.4จะสอดคล้องกับเวอร์ชันใดก็ตามที่เกี่ยวข้องกับ python ตัวอย่างเช่น:

$ rm venv/lib/python3.4/no-global-site-packages.txt

และหากคุณเปลี่ยนใจและต้องการนำกลับมาใช้ใหม่:

$ touch venv/lib/python3.4/no-global-site-packages.txt

หมายเหตุ:หากคุณไม่เห็นไฟล์ด้านบนแสดงว่าคุณมี Virtualenv เวอร์ชันใหม่กว่า คุณจะต้องทำตามคำตอบนี้แทน


18
ที่จะทำมัน การมีอยู่ (หรือไม่มีอยู่) ของไฟล์นั้นเป็นผลโดยตรงเพียงอย่างเดียวของแฟล็ก no-site-package site.py ที่กำหนดเองของ Virtualenv จะค้นหาไฟล์นั้นเพื่อตัดสินใจว่าจะเพิ่มไดเร็กทอรีแพ็กเกจไซต์ส่วนกลางลงใน sys.path หรือไม่
Carl Meyer

ยอดเยี่ยม! นั่นมัน! ขอบคุณมากสำหรับคำตอบนั้นและขอบคุณ Carl Meyer สำหรับความคิดเห็นเพิ่มเติม
Olivier Verdier

1
ที่virtualenv/python2.7/no-global-site-packages.txtอยู่ในเซิร์ฟเวอร์ ubuntu ของฉัน
caesarsol

4
Virtualenv เวอร์ชัน Windows มีvirtualenv/pyenv.cfgไฟล์ มีทางเลือกหนึ่งสำหรับแพ็คเกจไซต์: include-system-site-packages = false เปลี่ยนค่านี้และเรียกใช้ Activate.ps1
georgik

@georgik - ใช้งานได้กับ Linux เวอร์ชันvenvสำหรับPython 3.4.
Tomasz Dzieniak

13

อย่างน้อยสำหรับ Python 3.5.2 มีpyvenv.cfgไฟล์อยู่ในไดเร็กทอรี root ของ Virtualenv สิ่งที่คุณต้องทำคือเปลี่ยนinclude-system-site-packagesค่าสถานะจากfalseเป็นtrue:

home = /usr/bin
include-system-site-packages = false  # <- change this to "true"
version = 3.5.2

12

เมื่อใช้Virtualenvwrapperเพื่อจัดการ Virtualenvs คุณสามารถใช้ฟังก์ชันเชลล์toggleglobalsitepackagesเพื่อสลับระหว่างการใช้และไม่ใช้แพ็คเกจไซต์



2

ไปที่โฟลเดอร์ venv pyvenv.cfgของคุณและเปิด (เช่นหากสภาพแวดล้อมเสมือนของคุณถูกเรียกmyenvไฟล์จะอยู่ที่myenv\pyvenv.cfg)

คุณจะเห็นการตั้งค่าบูลีนที่เรียกว่า include-system-site-packages

ตั้งค่าtrueให้ใช้แพ็กเกจส่วนกลาง

หากคุณต้องการปิดใช้งานโดยใช้แพ็กเกจส่วนกลางให้ตั้งค่านั้นเป็นfalseแทน

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