แก้ไข:ขึ้นอยู่กับความคิดเห็น Ulf Rompe ของมันเป็นสิ่งสำคัญที่คุณใช้ "1" แทน "0"มิฉะนั้นคุณจะทำลายsys.path
ฉันทำ python มาระยะหนึ่งแล้ว (มากกว่าหนึ่งปี) และฉันมักจะสับสนว่าทำไมคนถึงแนะนำให้คุณใช้sys.path.append()
แทนsys.path.insert()
. ให้ฉันสาธิต
สมมติว่าฉันกำลังทำงานกับโมดูลชื่อ PyWorkbooks (ซึ่งติดตั้งบนคอมพิวเตอร์ของฉัน) แต่ฉันกำลังทำงานกับโมดูลอื่นพร้อมกัน (สมมติว่า PyJob) ที่รวม PyWorkbooks ขณะที่ฉันทำงานกับ PyJob ฉันพบข้อผิดพลาดใน PyWorkbooks ซึ่งฉันกำลังแก้ไขดังนั้นฉันจึงต้องการนำเข้าเวอร์ชันสำหรับการพัฒนา
มีหลายวิธีในการทำงานทั้งสองอย่าง (เช่นฉันสามารถวางโครงการ PyWorkbooks ไว้ใน PyJob ได้) แต่บางครั้งฉันก็ยังต้องเล่นกับเส้นทาง อย่างไรก็ตามฉันไม่สามารถทำsys.path.append()
กับโฟลเดอร์ที่ PyWorkbooks อยู่ได้ ทำไม? เพราะ python จะค้นหา PyWorkbooks ที่ติดตั้งไว้ก่อน!
นี่คือเหตุผลที่คุณต้องทำ sys.path.insert (1, path_to_dev_pyworkbooks)
สรุป:
sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
หรือ:
sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
สิ่งนี้ทำให้ฉันมีอาการแฮงค์อยู่สองสามครั้งในอดีตและฉันจะชอบมากถ้าเรา (ในฐานะชุมชน) เริ่มแนะนำ sys.path.insert(1, path)
ราวกับว่าคุณกำลังแทรกเส้นทางด้วยตนเองฉันคิดว่ามันปลอดภัยที่จะบอกว่านั่นคือเส้นทางที่คุณต้องการ ใช้!
หรือว่าฉันมีอะไรผิดปกติ? เป็นคำถามที่บางครั้งรบกวนจิตใจฉันและฉันก็อยากเปิด!
sys.path.insert(1, dev_folder)
แต่ยังไม่พบโมดูล dev และใช้เฉพาะโมดูลที่ติดตั้งเท่านั้น ฉันจะแก้ไขปัญหานี้ได้อย่างไร