sys.path
คุณไม่ควรจะต้องปรับเปลี่ยนเส้นทางโดยตรงทั้งผ่านตัวแปรสภาพแวดล้อมหรือ ไม่ว่าคุณจะใช้ระบบปฏิบัติการ (เช่นapt-get
) หรือpip
ใน virtualenv แพคเกจจะถูกติดตั้งไปยังตำแหน่งที่อยู่บนเส้นทางแล้ว
ในตัวอย่างของคุณวิทยุ GNU ได้รับการติดตั้งในsite-packages
ตำแหน่งมาตรฐานของระบบ Python 2 ซึ่งอยู่ในเส้นทางแล้ว การชี้ PyCharm ที่ล่ามที่ถูกต้องนั้นเพียงพอแล้ว หากไม่มีสิ่งผิดปกติที่ไม่ชัดเจน อาจเป็น/usr/bin/python
ได้ว่าไม่ได้ชี้ไปที่ล่ามเดียวกันกับที่ติดตั้ง GNU Radio ลองชี้เฉพาะที่python2.7
ไบนารี หรือ PyCharm เคยค่อนข้างแย่ในการตรวจหาแพ็คเกจ File > Invalidate Caches > Invalidate and Restart
จะบอกให้สแกนใหม่
คำตอบนี้จะกล่าวถึงวิธีการตั้งค่าสภาพแวดล้อมของโครงการติดตั้งแพ็คเกจในสถานการณ์ต่าง ๆ และกำหนดค่า PyCharm ฉันอ้างถึงคู่มือผู้ใช้ Python Packagingหลายครั้งซึ่งเขียนโดยกลุ่มเดียวกันที่ดูแลเครื่องมือบรรจุภัณฑ์ Python อย่างเป็นทางการ
วิธีที่ถูกต้องในการพัฒนาแอพพลิเคชั่น Python คือ virtualenv มีการติดตั้งแพคเกจและเวอร์ชันโดยไม่มีผลกระทบกับระบบหรือโครงการอื่น PyCharm มีอินเตอร์เฟสในตัวเพื่อสร้าง virtualenv และแพ็คเกจการติดตั้ง หรือคุณสามารถสร้างมันได้จากบรรทัดคำสั่งแล้วชี้ไปที่ PyCharm
$ cd MyProject
$ python2 -m virtualenv env
$ . env/bin/activate
$ pip install -U pip setuptools # get the latest versions
$ pip install flask # install other packages
ในโครงการ PyCharm File > Settings > Project > Project Interpreter
ของคุณไปที่ หากคุณใช้virtualenvwrapper
หรือ PyCharm เพื่อสร้าง env มันควรจะปรากฏในเมนู หากไม่มีให้คลิกเกียร์เลือกAdd Local
และค้นหา Python binary ใน env PyCharm จะแสดงแพ็คเกจทั้งหมดใน env ที่เลือก
ในบางกรณีเช่น GNU Radio ไม่มีแพ็คเกจที่จะติดตั้งpip
แพคเกจถูกติดตั้งทั้งระบบเมื่อคุณติดตั้งส่วนที่เหลือของ GNU Radio (เช่นapt-get install gnuradio
) ในกรณีนี้คุณยังควรใช้ virtualenv แต่คุณจะต้องทำให้ตระหนักถึงแพ็คเกจระบบนี้
$ python2 -m virtualenv --system-site-packages env
น่าเสียดายที่มันดูยุ่งเหยิงเล็กน้อยเนื่องจากแพ็คเกจระบบทั้งหมดจะปรากฏใน env ของคุณ แต่มันเป็นแค่ลิงค์คุณยังสามารถติดตั้งหรืออัพเกรดแพ็คเกจได้อย่างปลอดภัยโดยไม่ส่งผลกระทบต่อระบบ
ในบางกรณีคุณจะมีหลายแพคเกจท้องถิ่นที่คุณกำลังพัฒนาและต้องการให้โครงการหนึ่งใช้แพ็คเกจอื่น ในกรณีนี้คุณอาจคิดว่าคุณต้องเพิ่มแพ็กเกจโลคัลลงในพา ธ ของโปรเจ็กต์อื่น แต่ไม่ใช่ในกรณีนี้ คุณควรติดตั้งแพคเกจของคุณในโหมดการพัฒนา สิ่งที่ต้องการทั้งหมดนี้คือการเพิ่มsetup.py
ไฟล์ลงในแพ็คเกจของคุณซึ่งจะต้องมีการกระจายและปรับใช้แพคเกจในภายหลัง
น้อยที่สุดsetup.py
สำหรับโครงการแรกของคุณ:
from setuptools import setup, find_packages
setup(
name='mypackage',
version='0.1',
packages=find_packages(),
)
จากนั้นติดตั้งในโครงการที่สองของคุณ:
$ pip install -e /path/to/first/project