คำถามติดแท็ก pythonpath

22
จะเพิ่ม PYTHONPATH ใน Windows ได้อย่างไรจึงพบโมดูล / แพ็คเกจของฉัน
ฉันมีไดเรกทอรีซึ่งโฮสต์แอพ Django ทั้งหมดของฉัน ( C:\My_Projects) ฉันต้องการเพิ่มไดเรกทอรีนี้ในของฉันPYTHONPATHเพื่อให้สามารถเรียกแอพโดยตรง ฉันพยายามเพิ่มตัวแปรC:\My_Projects\;Windows ของฉันPathจาก Windows GUI ( My Computer > Properties > Advanced System Settings > Environment Variables) แต่ก็ยังไม่ได้อ่านโมดูล coltrane และสร้างข้อผิดพลาดนี้: ข้อผิดพลาด: ไม่มีโมดูลชื่อ coltrane


18
เพิ่มไดเรกทอรีไปยัง PYTHONPATH อย่างถาวรหรือไม่
เมื่อใดก็ตามที่ฉันใช้sys.path.appendไดเรกทอรีใหม่จะถูกเพิ่ม อย่างไรก็ตามเมื่อฉันปิด python รายการจะเปลี่ยนกลับเป็นค่าก่อนหน้า (ค่าเริ่มต้นหรือไม่) ฉันจะเพิ่มไดเรกทอรีไปยังถาวรได้PYTHONPATHอย่างไร

11
วิธีการกำหนดไดเรกทอรีสคริปต์ปัจจุบันอย่างถูกต้อง?
ฉันต้องการจะดูว่าวิธีที่ดีที่สุดในการกำหนดไดเรกทอรีสคริปต์ปัจจุบันในหลามคืออะไร? ฉันค้นพบว่าเนื่องจากการเรียกรหัสไพ ธ อนหลายวิธีทำให้หาทางออกที่ดีได้ยาก นี่คือปัญหาบางอย่าง: __file__ไม่ได้กำหนดว่าสคริปต์ที่จะดำเนินการกับexec,execfile __module__ ถูกกำหนดในโมดูลเท่านั้น ใช้กรณี: ./myfile.py python myfile.py ./somedir/myfile.py python somedir/myfile.py execfile('myfile.py') (จากสคริปต์อื่นที่สามารถอยู่ในไดเรกทอรีอื่นและสามารถมีไดเรกทอรีปัจจุบันอื่น ฉันรู้ว่าไม่มีวิธีการแก้ปัญหาที่สมบูรณ์แบบ แต่ฉันกำลังมองหาวิธีที่ดีที่สุดที่สามารถแก้ไขกรณีส่วนใหญ่ได้ วิธีการที่ใช้มากที่สุดคือแต่นี้จริงๆไม่ทำงานถ้าคุณรันสคริปต์จากอีกคนหนึ่งด้วยos.path.dirname(os.path.abspath(__file__))exec() คำเตือน โซลูชันใด ๆ ที่ใช้ไดเรกทอรีปัจจุบันจะล้มเหลวซึ่งอาจแตกต่างกันไปตามวิธีการเรียกใช้สคริปต์หรือสามารถเปลี่ยนแปลงได้ภายในสคริปต์ที่กำลังเรียกใช้

29
ข้อผิดพลาดการนำเข้า django - ไม่มีโมดูลชื่อ core.management
ตกลงฉันเห็นข้อผิดพลาดมากมายรอบตัว ฉันได้ลองทุกอย่างที่ฉันรู้แล้วและยังไม่เข้าใจ ฉันกำลังทำงานบนเซิร์ฟเวอร์การพัฒนาที่ใช้ python 2.5 และ Django 1.3 Django 1.3 ได้รับการติดตั้งโดยใช้ python setup.py ติดตั้งหลังจากคลายการดาวน์โหลด tar.gz ทุกอย่างทำงานได้ดีฉันแทบจะไม่จำเป็นต้องเรียกใช้manage.pyแต่ฉันกำลังพยายามใช้แอพ staticfiles ใหม่และกำลังประสบปัญหา python manage.py collectstatic Traceback (most recent call last): File "manage.py", line 2, in <module> from django.core.management import execute_manager ImportError: No module named core.management ตกลงดังนั้นฉันมีPATHปัญหา จากDjango ติดตั้งฉันตรวจสอบsite-packagesไดเรกทอรีของฉันอีกครั้ง python -c "from distutils.sysconfig import get_python_lib; …

22
ข้อผิดพลาด PyLint“ ไม่สามารถนำเข้า” ได้ - จะตั้ง PYTHONPATH ได้อย่างไร?
ฉันใช้ PyLint จากด้านใน Wing IDE บน Windows ฉันมีไดเรกทอรีย่อย (แพ็คเกจ) ในโครงการของฉันและภายในแพ็คเกจฉันนำเข้าโมดูลจากระดับบนสุดเช่น __init__.py myapp.py one.py subdir\ __init__.py two.py ข้างในtwo.pyฉันมีimport oneและสิ่งนี้ทำงานได้ดีที่รันไทม์เนื่องจากไดเรกทอรีระดับบนสุด (ซึ่งmyapp.pyรัน) อยู่ในเส้นทาง Python อย่างไรก็ตามเมื่อฉันรัน PyLint บน two.py มันทำให้ฉันมีข้อผิดพลาด: F0401: Unable to import 'one' ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

5
การเพิ่มไดเร็กทอรีไปยัง sys.path / PYTHONPATH
ฉันกำลังพยายามนำเข้าโมดูลจากไดเร็กทอรีเฉพาะ ปัญหาคือถ้าฉันใช้sys.path.append(mod_directory)เพื่อต่อท้ายพา ธ แล้วเปิดตัวแปล python ไดเร็กทอรีmod_directoryจะถูกเพิ่มที่ท้ายรายการ sys.path ถ้าฉันส่งออกPYTHONPATHตัวแปรก่อนเปิดตัวแปล python ไดเร็กทอรีจะถูกเพิ่มไปที่จุดเริ่มต้นของรายการ ในกรณีหลังนี้ฉันสามารถนำเข้าโมดูลได้ แต่ก่อนหน้านี้ฉันทำไม่ได้ มีใครอธิบายได้ไหมว่าทำไมสิ่งนี้จึงเกิดขึ้นและให้วิธีแก้ปัญหาเพื่อเพิ่มmod_directoryการเริ่มต้นภายในสคริปต์ python

6
PYTHONPATH เทียบกับ sys.path
นักพัฒนารายอื่นและฉันไม่เห็นด้วยว่าควรใช้ PYTHONPATH หรือ sys.path เพื่อให้ Python ค้นหาแพ็คเกจ Python ในไดเร็กทอรีผู้ใช้ (เช่นการพัฒนา) เรามีโครงการ Python ที่มีโครงสร้างไดเรกทอรีทั่วไป: Project setup.py package __init__.py lib.py script.py ใน script.py import package.libเราต้องทำ เมื่อแพคเกจที่ติดตั้งในเว็บไซต์แพคเกจ script.py package.libสามารถค้นหา อย่างไรก็ตามเมื่อทำงานจากไดเร็กทอรีผู้ใช้จำเป็นต้องทำอย่างอื่น วิธีแก้ปัญหาของฉันคือตั้งค่า PYTHONPATH ของฉันให้รวม "~ / Project" นักพัฒนารายอื่นต้องการใส่โค้ดบรรทัดนี้ไว้ที่ส่วนต้นของ script.py: sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) เพื่อให้ Python สามารถค้นหาสำเนาภายในเครื่องของpackage.lib. ฉันคิดว่านี่เป็นความคิดที่ไม่ดีเนื่องจากบรรทัดนี้มีประโยชน์สำหรับนักพัฒนาหรือผู้ที่ทำงานจากสำเนาในเครื่องเท่านั้น แต่ฉันไม่สามารถให้เหตุผลที่ดีได้ว่าทำไมจึงเป็นความคิดที่ไม่ดี เราควรใช้ PYTOHNPATH, sys.path หรือไม่?

5
Python - เพิ่ม PYTHONPATH ระหว่างการเรียกใช้โมดูลบรรทัดคำสั่ง
ฉันต้องการวิ่ง: python somescript.py somecommand แต่เมื่อฉันเรียกใช้สิ่งนี้ฉันจำเป็นต้องPYTHONPATHรวมไดเร็กทอรีไว้ด้วย ฉันไม่สามารถเพิ่มลงในตัวแปรสภาพแวดล้อมของฉันได้เนื่องจากไดเร็กทอรีที่ฉันต้องการเพิ่มการเปลี่ยนแปลงตามโปรเจ็กต์ที่ฉันกำลังทำงานอยู่ มีวิธีแก้ไขPYTHONPATHขณะรันสคริปต์หรือไม่? หมายเหตุ: ฉันไม่มีPYTHONPATHตัวแปรดังนั้นฉันไม่จำเป็นต้องกังวลเกี่ยวกับการต่อท้ายหรือการแทนที่ระหว่างการเรียกใช้สคริปต์นี้

3
เหตุใดจึงต้องใช้ sys.path.append (path) แทน sys.path.insert (1, path)
แก้ไข:ขึ้นอยู่กับความคิดเห็น 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 …

10
วิธีกำหนดค่า PYTHONPATH แบบกำหนดเองด้วย VM และ PyCharm
ฉันใช้ IntelliJ กับปลั๊กอิน Python และคุณสมบัติRemote Interpreterเพื่อสื่อสารกับ Vagrant VM ของฉัน ตั้งค่าตัวแปลระยะไกลอย่างถูกต้องเพื่อใช้ล่ามของ VM ของฉัน แต่ฉันใช้ PYTHONPATH ที่กำหนดเองใน VM ของฉันและฉันต้องการให้ IntelliJ จดจำเส้นทางนั้นและรวมโมดูลไว้ในเส้นทางนั้นเมื่อพัฒนา ฉันจะกำหนดค่าตัวแปลระยะไกลของ IntelliJ / PyCharm ให้ใช้ PYTHONPATH ที่กำหนดเองบน VM ได้อย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.