เมื่อฉันติดตั้งแพคเกจ python deb พูดpython-numpy
ไฟล์เป็นไฟล์ python แบบธรรมดา ฉันจะบอกผู้จัดการแพคเกจได้อย่างไรว่าฉันควรใช้ไฟล์ pyc หรือดีกว่า - pyo
เมื่อฉันติดตั้งแพคเกจ python deb พูดpython-numpy
ไฟล์เป็นไฟล์ python แบบธรรมดา ฉันจะบอกผู้จัดการแพคเกจได้อย่างไรว่าฉันควรใช้ไฟล์ pyc หรือดีกว่า - pyo
คำตอบ:
แอพพลิเคชั่น Python ที่ได้รับการบรรจุอย่างดีนั้นกำลังถูกคอมไพล์ไปยัง.pyc
ไฟล์ในการรันสคริปต์หลังจากติดตั้งไฟล์แล้ว นี่เป็นสิ่งจำเป็นตามแนวทางบรรจุภัณฑ์เพื่อให้สามารถปรับใช้กับการติดตั้ง Python ที่คุณใช้ในขณะนั้น อย่าลืมว่า.pyc
ไฟล์นั้นมีความเฉพาะเจาะจงกับระบบของคุณมาก (เวอร์ชัน Python และการขึ้นต่อกัน)
ทั้งหมด.pyo
และ.pyc
ไฟล์จึงได้รับการยกเว้นเฉพาะในแพคเกจและติดแท็กเป็นข้อผิดพลาดโดย Lintian :
ไฟล์ไพ ธ อนที่คอมไพล์แล้วจะต้องไม่รวมอยู่ในแพ็คเกจ ไฟล์เหล่านี้ควรถูกลบออกจากแพ็คเกจและสร้างเมื่อเวลาติดตั้งแพ็คเกจใน Postinst
อ้างถึงส่วนนโยบาย Debian Python 2.6 ( การรวบรวมโมดูลโดยย่อ ) สำหรับรายละเอียด
ความรุนแรง: จริงจังแน่นอน: แน่นอน
ในกรณีของpython-numpy
การรวบรวมไบต์หลังการติดตั้งนี้จะถูกจัดการโดย debhelper hook ของ pycentral หลังจากการติดตั้งดูเหมือนว่า:
ls -l /usr/lib/python2.7/dist-packages/numpy
lrwxrwxrwx 1 root root 47 Mar 20 2012 add_newdocs.py -> ../../../../share/pyshared/numpy/add_newdocs.py
-rw-r--r-- 1 root root 251912 Aug 6 22:06 add_newdocs.pyc
เหตุผลที่ไฟล์.pyc
/ .pyo
ไฟล์เหล่านี้ไม่ได้รับการรวบรวมขณะรันไทม์ระหว่างการเริ่มต้นแอปพลิเคชันครั้งแรกตามที่คุณคาดไว้มีดังต่อไปนี้
ไฟล์ Python นั้นได้รับการติดตั้งในไดเรกทอรีทั่วทั้งระบบซึ่งมีให้สำหรับผู้ใช้ทุกคนในระบบ เมื่อใดก็ตามที่ผู้ใช้เริ่มต้นแอพพลิเคชั่นตัวแปลภาษาไพ ธ อนสามารถอ่าน.py
ไฟล์ได้ แต่มันไม่สามารถเขียนไปยังไดเรกทอรี (เช่น/usr/lib/python2.7/dist-packages/
) นี่เป็นส่วนหนึ่งของความปลอดภัยทั่วไปในระบบ Linux ทั้งหมด ผู้ใช้ไม่ควรเขียน/usr
เพียงมีสิทธิ์รูทสิ่งนี้ควรจะเป็นไปได้ ด้วยเหตุผลนี้ APT hooks จะทำการรวบรวมไฟล์ Python ให้คุณ ณ เวลาที่ทำการติดตั้ง ประการแรกเพื่อลดขนาดแพ็กเกจอันดับที่สองเพื่อให้สามารถดึงตะขอกลับคืนได้เมื่อสิ่งที่เปลี่ยนแปลงในระบบของคุณเกี่ยวกับ Python เนื่องจากจำเป็นต้องคอมไพล์ใหม่เมื่อไม่สามารถใช้ร่วมกันได้ในระหว่างการอัพเกรด
อย่างไรก็ตามสิ่งนี้จะไม่ส่งผลกระทบต่อไฟล์ไพ ธ อนที่ผู้ใช้เป็นเจ้าของซึ่งกำลังรวบรวมที่รันไทม์
/usr/lib/python2.7/dist-packages/numpy
- มีpyc
ไฟล์ ฉันจำได้ว่าฉันดูที่การติดตั้งแบบ seveal - และมีไฟล์ py ธรรมดา ดังนั้นฉันจึงเรียงลำดับของ "ไม่สามารถทำซ้ำข้อผิดพลาด"
.pyc
ไม่มีอยู่นั่นคือแพคเกจไม่ได้ติดตั้งอย่างสมบูรณ์ หลังจากแกะกล่องออกแล้วมีขั้นตอนอื่นให้ทำ IIRC เบ็ดกลางหลามจะทำงานหลังจากติดตั้งแพ็คเกจทั้งหมดแล้วเท่านั้น ดังนั้นในการติดตั้งเซสชัน APT ที่กำลังทำงานหรือถูกขัดจังหวะการสังเกตที่คุณอธิบายไว้อาจทำได้
/usr/share/pyshared/
เขียนเอง - เพื่อเปิดใช้งานไพ ธ อนเพื่อรวบรวมไฟล์ในการเรียกใช้ครั้งแรก