ฉันสังเกตว่าการอิมพอร์ตไฟล์ Python ที่สามารถเรียกทำงานได้จะบันทึกไฟล์ * .py [co] ตามที่คาดไว้ ฉันสุ่มสงสัยว่าฉันจะสามารถเรียกใช้ไฟล์นี้ได้โดยตรงหรือไม่และใช้งานได้!
ขั้นตอนในการทำซ้ำ:
$ echo 'print "Worked."' > testcase.py
$ chmod u+x testcase.py
$ python -c 'import testcase'
Worked.
$ ./testcase.pyc
Worked.
มันทำงานอย่างไร เหตุใดฉันจึงไม่ได้รับข้อความแสดงข้อผิดพลาด เป็นระบบของฉัน Ubuntu 9.04 ทำสิ่งพิเศษหรือฉันลืมบางสิ่งเกี่ยวกับวิธีการทำงานของ Linux โดยทั่วไป
$ python --version
Python 2.6.2
$ hd testcase.pyc
00000000 d1 f2 0d 0a a4 4f 08 4b 63 00 00 00 00 00 00 00 |.....O.Kc.......|
00000010 00 01 00 00 00 40 00 00 00 73 09 00 00 00 64 00 |.....@...s....d.|
00000020 00 47 48 64 01 00 53 28 02 00 00 00 73 07 00 00 |.GHd..S(....s...|
00000030 00 57 6f 72 6b 65 64 2e 4e 28 00 00 00 00 28 00 |.Worked.N(....(.|
00000040 00 00 00 28 00 00 00 00 28 00 00 00 00 73 0b 00 |...(....(....s..|
00000050 00 00 74 65 73 74 63 61 73 65 2e 70 79 74 08 00 |..testcase.pyt..|
00000060 00 00 3c 6d 6f 64 75 6c 65 3e 01 00 00 00 73 00 |..<module>....s.|
00000070 00 00 00 |...|
00000073
(รวมถึง hexdump เพื่อแสดงว่าไม่มีเส้น shebang และการอ่านเกี่ยวกับรูปแบบ. pyc ไม่มีอะไรที่นี่ที่ไม่เฉพาะเจาะจงกับ Python)