วิธีกำหนดค่า PYTHONPATH แบบกำหนดเองด้วย VM และ PyCharm


86

ฉันใช้ IntelliJ กับปลั๊กอิน Python และคุณสมบัติRemote Interpreterเพื่อสื่อสารกับ Vagrant VM ของฉัน ตั้งค่าตัวแปลระยะไกลอย่างถูกต้องเพื่อใช้ล่ามของ VM ของฉัน แต่ฉันใช้ PYTHONPATH ที่กำหนดเองใน VM ของฉันและฉันต้องการให้ IntelliJ จดจำเส้นทางนั้นและรวมโมดูลไว้ในเส้นทางนั้นเมื่อพัฒนา

ฉันจะกำหนดค่าตัวแปลระยะไกลของ IntelliJ / PyCharm ให้ใช้ PYTHONPATH ที่กำหนดเองบน VM ได้อย่างไร


ฉันมีปัญหานี้ทุกประการยกเว้นว่าฉันมีโครงการมากมายตามโครงการทั่วไปและตอนนี้ (ใน Emacs) ฉันตั้งค่าทุกอย่างแบบไดนามิก การตั้งค่าเป็นรายโครงการใน Pycharm ดูเหมือนเป็นภาระ
AdamC

คำตอบ:


125

สำหรับ PyCharm 5 (หรือ 2016.1) คุณสามารถ:

  1. เลือก Preferences> Project Interpreter
  2. ทางด้านขวาของตัวเลือกล่ามจะมีปุ่ม "... " ให้คลิก
  3. เลือก "เพิ่มเติม ... "
  4. เปิดหน้าต่างใหม่ "Project Interpreters"
  5. เลือกปุ่มขวาสุด (ชื่อว่า "แสดงเส้นทางสำหรับล่ามที่เลือก")
  6. เปิดหน้าต่าง "Interpreter Paths"
  7. คลิกปุ่ม "+"> เลือกไดเร็กทอรี PYTHONPATH ที่คุณต้องการ (โฟลเดอร์ที่มีโมดูล python) และคลิกตกลง
  8. เสร็จแล้ว! สนุกกับมัน!

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่ ใส่คำอธิบายภาพที่นี่


นี่คือสิ่งที่ฉันทำในโครงการของฉันน่ารำคาญมาก ฉันมีโครงการ A โครงการทั่วไปการทดสอบโครงการ ในการรัน unittests ภายใต้การทดสอบโปรเจ็กต์ฉันได้เพิ่มการอ้างอิงโปรเจ็กต์ดังนั้นการทดสอบโปรเจ็กต์จึงขึ้นอยู่กับโปรเจ็กต์ A และทั่วไป แต่ฉันยังต้องเพิ่มโฟลเดอร์จาก A ด้วยตนเองและทั่วไปลงใน PYTHONPATH
thinkanotherone

สิ่งนี้จะเพิ่มไดเร็กทอรีไปยัง global PYTHONPATH สำหรับล่ามนั้นใช่ไหม ไม่ใช่แค่โครงการ?
Ray

@ ใช่ดูเหมือนว่าจะเปลี่ยนการตั้งค่าล่ามทั่วโลก แต่เราสามารถใช้ Virtualenv ที่แตกต่างกันสำหรับโครงการต่างๆและตั้งค่า PYTHONPATH ที่แตกต่างกันสำหรับพวกเขา
phil

โปรดทราบว่าก่อนอื่นคุณต้องตั้งค่าล่ามเป็นล่ามของโครงการของคุณมิฉะนั้นปุ่มซ้ายสุดจะถูกปิดใช้งาน
ospider

บน OSX Cmd + Shift + Period จะแสดงโฟลเดอร์ที่ซ่อนอยู่ในกล่องโต้ตอบเลือก (เช่น / usr) - เนื่องจากดูเหมือนจะไม่มีวิธีในการพิมพ์เส้นทาง
แฟลช

83

คำแนะนำในการแก้ไข PYTHONPATH ของคุณหรือแก้ไขปัญหาความละเอียดการนำเข้าสำหรับการตรวจสอบโค้ดมีดังนี้:

  1. เปิดการตั้งค่า (บน Mac แป้นพิมพ์ลัดคือ⌘,)

วิธีไปที่การตั้งค่าจากเมนู

  1. มองหาProject Structureในแถบด้านข้างทางด้านซ้ายใต้Project: Your Project Name

  2. เพิ่มหรือลบโมดูลบนแถบด้านข้างขวา

การตั้งค่าโครงสร้างโครงการใน Pycharm 4.5

แก้ไข : ฉันได้อัปเดตภาพหน้าจอนี้สำหรับ PyCharm 4.5


สิ่งนี้ยังใช้ได้หรือไม่ ฉันคาดว่าจะมีมืออาชีพ PyCharm รุ่นล่าสุด แต่ฉันพลาดหมวดหมู่เหล่านั้นมากมาย ... รวมถึงโครงสร้างโครงการ! แต่ขอบคุณสำหรับการโพสต์นี้ !!!
R Claven

1
สวัสดีฉันได้อัปเดตภาพหน้าจอของ PyCharm 4.5 ซึ่งเป็นเวอร์ชันล่าสุด ดูเหมือนว่าพวกเขาจัดระเบียบการตั้งค่าใหม่ในแถบด้านข้าง
Bjorn

อันที่จริงฉันเป็นหนี้บุญคุณขอบคุณมาก ฉันกำลังยุ่งกับ "การตั้งค่าเริ่มต้น" แทนที่จะเป็นการตั้งค่าโครงการ คำตอบของคุณที่นี่ช่วยให้ฉันตระหนักถึงสิ่งนี้และจากนั้นฉันก็แก้ไขความคลาดเคลื่อนหลายอย่างและใช้ได้ ขอขอบคุณ!
R Claven

มีวิธีดำเนินการทั่วโลกหรือไม่? เพิ่ม /Library/Python/2.7/site-packages และ /usr/local/lib/python2.7/site-packages ลงในทุกโปรเจ็กต์ที่ฉันเปิดมีกลิ่นเหม็น
jeremyjjbrown

ใช่ @jeremyjjbrown ฉันเชื่อว่าคุณทำได้โดยคลิกที่ "ล่ามโครงการ" และเลือกเส้นทางล่ามที่มีแพ็คเกจไซต์ที่คุณต้องการ คำถามนี้เป็นเพียงการตอบคำถามเพื่อให้มีแพ็คเกจเฉพาะโครงการสำหรับโครงการของพวกเขา คุณยังสามารถใช้ requirements.txt เพื่อเพิ่มโปรเจ็กต์ deps ทั้งหมดของคุณใน pycharm
Bjorn

16

สำหรับฉันวิธีแก้ปัญหาคือไปที่

Run > Edit Configuration > Defaults > Python

จากนั้นจัดการไฟล์

  • "เพิ่มรากเนื้อหาใน PYTHONPATH" และ
  • "เพิ่มรากที่มาใน PYTHONPATH"

ช่องทำเครื่องหมายเช่นเดียวกับการตั้งค่าฟิลด์ "ไดเรกทอรีการทำงาน"

หากคุณได้ตั้งค่าการกำหนดค่า Run / Debug ของคุณเองคุณอาจต้องการไปที่

Run > Edit Configuration > Python > [Whatever you called your config]

และแก้ไขที่นั่น

ปัญหาของฉันคือฉันต้องการให้ที่เก็บทั้งหมดของฉันรวมอยู่ในโครงการ PyCharm 2016.2 ของฉัน แต่มีเพียงโฟลเดอร์ย่อยเท่านั้นที่เป็นรูทซอร์สโค้ด python ที่แท้จริง ฉันเพิ่มเป็น "Source Root" โดยคลิกขวาที่โฟลเดอร์แล้ว

Mark directory as > Source Root

จากนั้นยกเลิกการเลือก "Add content root to PYTHONPATH" และเลือก "Add source root to PYTHONPATH" ในเมนู Run / Debug config จากนั้นฉันตรวจสอบเส้นทางโฟลเดอร์โดยทำ:

import sys
logger.info(sys.path)

ผลลัพธ์นี้:

[
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', 
    '/usr/lib/python3.4/lib-dynload', 
    '/usr/local/lib/python3.4/dist-packages', 
    '/usr/lib/python3/dist-packages'
]

อย่างไรก็ตามหากไม่มีการแก้ไขก็กล่าวว่า:

[
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/local/my_project_root',                   <-- NOT WANTED
    '/usr/lib/python3.4', 
    '/usr/lib/python3.4/plat-x86_64-linux-gnu', 
    '/usr/lib/python3.4/lib-dynload', 
    '/usr/local/lib/python3.4/dist-packages', 
    '/usr/lib/python3/dist-packages'
]

ซึ่งหมายความว่าฉันมีโฟลเดอร์รูทโปรเจ็กต์รวมอยู่ด้วย สิ่งนี้ทำให้เส้นทางของฉันยุ่งเหยิง


ขอบคุณฉันไม่ใช่ผู้เชี่ยวชาญ Python และรู้สึกสงสัยว่าจะดูเส้นทางการนำเข้าที่ฉันสามารถเข้าถึงได้อย่างไร! ( sys.pathส่วนนั้น)
Rastikan

ไม่เหมาะอย่างยิ่งเนื่องจากต้องอัปเดตการกำหนดค่าการรันทุกครั้ง
StephenBoesch

@javadba หากคุณต้องการให้ใช้งานได้กับการกำหนดค่าทั้งหมดให้ไปที่Run > Edit Configuration > Templates > Pythonแทน
André C. Andersen

@ AndréC Andersen ขอบคุณ! ผมไม่เคยแม้แต่จะมองที่แม่ก่อน
StephenBoesch

13

สิ่งนี้ทำกับ PyCharm Community 2019.1

  1. ไปที่การตั้งค่าโครงการ การตั้งค่า
  2. ไปที่ Project Structure และคลิกขวาที่ไดเร็กทอรีที่คุณต้องการเพิ่มแล้วคลิก "Sources" โครงสร้างโครงการ - เพิ่มแหล่งที่มา

ควรเพิ่มไดเรกทอรีใน pythonpath ของคุณ โครงสร้างโครงการ - หลังจากเพิ่มแหล่งที่มา


3

การอัปเดตคำตอบที่ถูกต้องที่philมีให้สำหรับ Pycharm เวอร์ชันล่าสุด (เช่น 2019.2)

ไปที่ไฟล์> การตั้งค่าและหาโครงการของคุณแล้วเลือกโครงการล่าม ตอนนี้คลิกปุ่มที่มีฟันเฟืองทางด้านขวาของตัวแปลโครงการที่เลือก (เคยเป็น... )

ใส่คำอธิบายภาพที่นี่

จากเมนูแบบเลื่อนลงให้เลือกแสดงทั้งหมด ...และในกล่องโต้ตอบที่เปิดขึ้นให้คลิกไอคอนที่มีโฟลเดอร์และโฟลเดอร์ย่อยสองโฟลเดอร์

ใส่คำอธิบายภาพที่นี่

คุณจะพบกับกล่องโต้ตอบที่มีเส้นทางล่ามปัจจุบันคลิกที่+เพื่อเพิ่มอีกหนึ่งรายการ


ขอขอบคุณ!!! เพื่อนร่วมงานคนหนึ่งและฉันต่อสู้กับการตั้งค่าสภาพแวดล้อมของเขาให้เข้ากับของฉันและฉันก็จำไม่ได้ว่าจะทำตามขั้นตอนเหล่านี้ แต่มีเส้นทางสำคัญอยู่ที่นั่น (ซึ่งถึงกับบอกว่า "เพิ่มโดยผู้ใช้")
Drarok

2

จากประสบการณ์ของฉันการใช้ตัวแปร PYTHONPATH เลยมักจะเป็นแนวทางที่ไม่ถูกต้องเพราะมันเล่นกับ VENV บน windows ได้ไม่ดี PYTHON ในการโหลดจะเตรียมพา ธ โดยการเติม PYTHONPATH ไปยังพา ธ ซึ่งอาจส่งผลให้ Venv ที่คุณเตรียมไว้อย่างดีต้องการดึงแพ็คเกจไซต์ทั่วโลก

แทนที่จะใช้เส้นทาง PYTHON ให้รวมไฟล์ pythonpath.pth ไว้ในไดเร็กทอรีแพ็กเกจไซต์ที่เกี่ยวข้อง (แม้ว่าบางครั้งระวัง pythons ที่กำหนดเองจะมองหาในตำแหน่งที่แตกต่างกันเช่น enthought ดูในไดเร็กทอรีเดียวกับ python.exe สำหรับไฟล์. pth) ด้วย สภาพแวดล้อมเสมือนจริงแต่ละแห่ง สิ่งนี้จะทำหน้าที่เหมือน PYTHONPATH เพียง แต่จะเฉพาะเจาะจงสำหรับการติดตั้ง python ดังนั้นคุณสามารถแยกต่างหากสำหรับการติดตั้ง python / สภาพแวดล้อมแต่ละรายการ Pycharm ผสานรวมกับ VENV อย่างมากหากคุณเพียงแค่ไปที่ python ของ VENV เป็นการติดตั้ง python ของคุณ

ดูเช่นคำถาม SO นี้สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับไฟล์. pth ....



0

คุณสามารถทำได้โดยไปที่กล่องโต้ตอบของล่าม คลิกที่ล่ามที่คุณใช้และข้างใต้คุณจะเห็นแท็บสองแท็บหนึ่งเรียกว่าแพ็กเกจและอีกแท็บหนึ่งเรียกว่า Path

คลิกที่ Path และเพิ่มเส้นทาง VM ของคุณเข้าไป


เมื่อฉันคลิกตัวแปลระยะไกลและเพิ่ม Classpath มันจะบ่นเมื่อฉันระบุไดเร็กทอรีระยะไกล (เช่น/home/vagrant/mydir) ฉันจำเป็นต้องนำเสนอเส้นทางด้วยบางสิ่งหรือไม่? อินเทอร์เฟซของฉันแตกต่างกันเล็กน้อยเนื่องจากฉันใช้ IntelliJ กับปลั๊กอิน Python และไม่ใช่ PyCharm หากช่วยได้
baalexander

1
คุณสามารถไปที่ล่าม SSH และโหลดไฟล์จากไฟล์คนจรจัดซึ่งเป็นตัวเลือกที่นั่น
Games Brainiac

0

ใน pycharm 5 ทำตามนี้ https://www.jetbrains.com/pycharm/help/configuring-python-interpreter-for-a-project.html

1) เปิดกล่องโต้ตอบการตั้งค่าและคลิกหน้าล่ามโครงการ
2) ในบานหน้าต่างโครงการให้เลือกโครงการที่ต้องการ
3) สำหรับโปรเจ็กต์ที่เลือกให้เลือก SDK จากรายการล่าม Python ที่มีและสภาพแวดล้อมเสมือน


0

ใน Intellij v2017.2 คุณสามารถไปที่:

run > edit configurations > click ... next to the field 'Environment variables' > click the green + sign

ชื่อ = PYTHONPATH

ค่า = your_python_path

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