ฉันรู้วิธีตั้งค่าใน / etc / profile และในตัวแปรสภาพแวดล้อมของฉัน
แต่ถ้าฉันต้องการตั้งค่าระหว่างสคริปต์ล่ะ? มัน import os, sys หรือเปล่า? ฉันต้องทำอย่างไร?
ฉันรู้วิธีตั้งค่าใน / etc / profile และในตัวแปรสภาพแวดล้อมของฉัน
แต่ถ้าฉันต้องการตั้งค่าระหว่างสคริปต์ล่ะ? มัน import os, sys หรือเปล่า? ฉันต้องทำอย่างไร?
คำตอบ:
คุณไม่ได้ตั้งคุณเพิ่มรายการPYTHONPATH
sys.path
เป็นรายชื่อไดเรกทอรีที่ควรค้นหาสำหรับแพ็คเกจ Python ดังนั้นคุณสามารถต่อท้ายไดเรกทอรีของคุณเข้ากับรายการนั้นได้
sys.path.append('/path/to/whatever')
ในความเป็นจริงsys.path
เริ่มต้นโดยการแยกค่าของPYTHONPATH
บนอักขระตัวคั่นเส้นทาง ( :
บนระบบที่คล้ายกับ Linux ;
บน Windows)
คุณยังสามารถเพิ่มไดเร็กทอรีโดยใช้site.addsitedir
และวิธีการนั้นจะคำนึงถึง.pth
ไฟล์ที่มีอยู่ภายในไดเร็กทอรีที่คุณส่งผ่าน (ซึ่งจะไม่เป็นเช่นนั้นกับไดเรกทอรีที่คุณระบุPYTHONPATH
)
คุณสามารถรับและตั้งค่าตัวแปรสภาพแวดล้อมผ่านทางos.environ
:
import os
user_home = os.environ["HOME"]
os.environ["PYTHONPATH"] = "..."
แต่เนื่องจากล่ามของคุณทำงานอยู่แล้วจะไม่มีผลใด ๆ คุณควรใช้
import sys
sys.path.append("...")
ซึ่งเป็นอาร์เรย์ที่คุณPYTHONPATH
จะเปลี่ยนเป็นล่ามในการเริ่มต้น
หากคุณใส่sys.path.append('dir/to/path')
โดยไม่ได้กาเครื่องหมายถูกเพิ่มเข้าไปแล้วคุณสามารถสร้างรายการยาวsys.path
ๆ ได้ สำหรับสิ่งนั้นฉันขอแนะนำสิ่งนี้:
import sys
import os # if you want this directory
try:
sys.path.index('/dir/path') # Or os.getcwd() for this directory
except ValueError:
sys.path.append('/dir/path') # Or os.getcwd() for this directory
คุณสามารถตั้งค่าPYTHONPATH
โดยos.environ['PATHPYTHON']=/some/path
จากนั้นคุณต้องเรียกos.system('python')
เพื่อรีสตาร์ท python shell เพื่อให้เส้นทางที่เพิ่มใหม่มีประสิทธิภาพ
os.system()
ไม่ "รีสตาร์ท python shell" แต่จะเริ่มอินสแตนซ์ Python แบบโต้ตอบใหม่ เมื่อคุณกลับจากนั้นคุณจะกลับมาอยู่ในสคริปต์การโทร
ฉันลินุกซ์ใช้งานได้เช่นกัน:
import sys
sys.path.extend(["/path/to/dotpy/file/"])
sys.path.insert(0, '/path/to/whatever')
.