ไดเร็กทอรีsite-packagesถูกกล่าวถึงในบทความที่เกี่ยวข้องกับ Python ต่างๆ มันคืออะไร? วิธีการใช้งาน?
ไดเร็กทอรีsite-packagesถูกกล่าวถึงในบทความที่เกี่ยวข้องกับ Python ต่างๆ มันคืออะไร? วิธีการใช้งาน?
คำตอบ:
site-packagesเป็นไดเร็กทอรีเป้าหมายของแพ็คเกจ Python ที่สร้างขึ้นเอง เมื่อคุณสร้างและติดตั้งแพคเกจ Python จากซอร์ส (โดยใช้distutilsอาจโดยการดำเนินการpython setup.py install) คุณจะพบโมดูลที่ติดตั้งsite-packagesตามค่าเริ่มต้น
มีสถานที่มาตรฐาน:
prefix/lib/pythonX.Y/site-packagesexec-prefix/lib/pythonX.Y/site-packagesprefix\Lib\site-packages1 Pureหมายความว่าโมดูลใช้รหัส Python เท่านั้น Non-pureสามารถมีรหัส C / C ++ ได้เช่นกัน
site-packagesเป็นส่วนเริ่มต้นของเส้นทางการค้นหา Python ดังนั้นโมดูลที่ติดตั้งจึงสามารถนำเข้าได้อย่างง่ายดายในภายหลัง
lib64!
/usr/lib/python3.6?
เมื่อคุณใช้--userตัวเลือกกับ pipแพ็คเกจจะถูกติดตั้งในโฟลเดอร์ของผู้ใช้แทนที่จะเป็นโฟลเดอร์ส่วนกลางและคุณไม่จำเป็นต้องเรียกใช้คำสั่ง pip ด้วยสิทธิ์ของผู้ดูแลระบบ
ตำแหน่งของโฟลเดอร์แพ็คเกจของผู้ใช้สามารถพบได้โดยใช้:
python -m site --user-site
สิ่งนี้จะพิมพ์สิ่งที่ต้องการ:
C:\Users\%USERNAME%\AppData\Roaming\Python\Python35\site-packages
เมื่อคุณไม่ได้ใช้--userตัวเลือกกับ pipแพ็คเกจจะถูกติดตั้งในโฟลเดอร์ส่วนกลางที่กำหนดโดย:
python -c "import site; print(site.getsitepackages())"
สิ่งนี้จะพิมพ์สิ่งที่ต้องการ:
['C:\\Program Files\\Anaconda3', 'C:\\Program Files\\Anaconda3\\lib\\site-packages'
หมายเหตุ: ค่าที่พิมพ์ด้านบนใช้สำหรับ Windows 10 ที่ติดตั้ง Anaconda 4.x โดยมีค่าเริ่มต้น
ไซต์แพ็คเกจเป็นเพียงตำแหน่งที่ Python ติดตั้งโมดูล
ไม่จำเป็นต้อง "พบว่ามัน" หลามรู้ที่จะหามันด้วยตัวเองสถานที่แห่งนี้คือมักจะเป็นส่วนหนึ่งของ PYTHONPATH นี้ (sys.path)
โดยทางโปรแกรมคุณสามารถค้นหาได้ด้วยวิธีนี้:
import sys
site_packages = next(p for p in sys.path if 'site-packages' in p)
print site_packages
'/Users/foo/.envs/env1/lib/python2.7/site-packages'
site-packages StopIterationตัวอย่างเช่น Debian (และ Ubuntu) ต้องdist-packagesติดตั้งโมดูลแบบกระจาย
/usr/local/lib/python3.6/site-packagesบน Ubuntu