เมื่อฉันรวบรวมไฟล์ไพ ธ อนฉันจะได้รับไฟล์ * .pyc เมื่อฉันพยายามเรียกใช้ฉันได้รับข้อความแจ้งว่าไม่มีโปรแกรมสำหรับใช้งาน เมื่อฉันค้นหาโปรแกรมออนไลน์ผ่านตัวเลือกนั้นมันบอกว่าไม่มีเลย ใครสามารถช่วยฉันเรียกใช้ไฟล์ที่นั่นได้บ้าง
เมื่อฉันรวบรวมไฟล์ไพ ธ อนฉันจะได้รับไฟล์ * .pyc เมื่อฉันพยายามเรียกใช้ฉันได้รับข้อความแจ้งว่าไม่มีโปรแกรมสำหรับใช้งาน เมื่อฉันค้นหาโปรแกรมออนไลน์ผ่านตัวเลือกนั้นมันบอกว่าไม่มีเลย ใครสามารถช่วยฉันเรียกใช้ไฟล์ที่นั่นได้บ้าง
คำตอบ:
เนื่องจากไฟล์ไพ ธ อนของคุณถูกคอมไพล์ด้วยไบต์คุณจำเป็นต้องเรียกใช้ผ่านตัวแปลหลาม
python yourfile.pyc
เหตุผลที่คุณสามารถเรียกใช้ไฟล์. py ของคุณโดยตรงได้เนื่องจากคุณมีสาย
#!/usr/bin/python
หรือ
#!/usr/bin/env python
หรือสิ่งที่คล้ายกันในบรรทัดแรกในไฟล์. py สิ่งนี้บอกให้เชลล์ของคุณดำเนินการส่วนที่เหลือของไฟล์ด้วย python interpreter
ในการคอมไพล์ไฟล์. pyc python3 ที่คอมไพล์ฉันใช้uncompyle6
ใน Ubuntu OS ปัจจุบันของฉันดังนี้:
การติดตั้ง uncompyle6:
pip3 install uncompyle6
ในการสร้างไฟล์. py จากไฟล์. pyc ให้รัน:
uncompyle6 -o . your_filename.pyc
ไฟล์. py ใหม่โดยอัตโนมัติจะถูกสร้างขึ้นด้วยชื่อไฟล์. pyc ที่มีอยู่เดิม
Python รวบรวมไฟล์. py และบันทึกเป็นไฟล์. pyc เพื่อให้สามารถอ้างอิงได้ในการเรียกใช้ครั้งต่อไป . pyc มีการรวบรวม bytecode ของไฟล์ต้นฉบับ Python ซึ่งเป็นสิ่งที่ Python interpreter รวบรวมแหล่งที่มา รหัสนี้จะถูกดำเนินการโดยเครื่องเสมือนของ Python ไม่มีอันตรายใด ๆ ในการลบพวกเขา (.pyc) แต่พวกเขาจะประหยัดเวลาในการรวบรวมหากคุณทำการประมวลผลจำนวนมาก
Python เป็นภาษาที่ถูกตีความเมื่อเทียบกับภาษาที่รวบรวมแม้ว่าความแตกต่างสามารถเลือนลางเนื่องจากการมีอยู่ของคอมไพเลอร์ bytecode การคอมไพล์มักหมายถึงการแปลงเป็นรหัสเครื่องซึ่งเป็นสิ่งที่ทำงานได้เร็วที่สุด แต่ล่ามจะใช้ข้อความที่มนุษย์อ่านและดำเนินการได้ พวกเขาอาจทำสิ่งนี้ด้วยสเตจระดับกลาง
ตัวอย่างเช่นเมื่อคุณเรียกใช้แฟ้มแหล่งที่มา myprog.py หลามล่ามลักษณะแรกเพื่อดูว่าmyprog.pyc
มีอยู่ (ซึ่งเป็นไบต์รหัสรุ่นเรียบเรียงmyprog.py
) และถ้ามันเป็นเรื่องที่ผ่านมาเมื่อเร็ว ๆ myprog.py
นี้หรือมากกว่า ถ้าเป็นเช่นนั้นล่ามก็จะเรียกใช้ ถ้ามันไม่ได้อยู่หรือmyprog.py
คือที่ผ่านมามากกว่านั้น (หมายถึงคุณมีการเปลี่ยนแปลงแฟ้มแหล่งที่มา) ล่ามคอมไพล์เป็นครั้งแรกที่จะmyprog.py
myprog.pyc
มีข้อยกเว้นอย่างหนึ่งสำหรับตัวอย่างด้านบน หากคุณใส่#! /usr/bin/env python
บรรทัดแรกของmyprog.py
ให้ทำให้มันปฏิบัติการแล้วเรียกใช้myprog.py
ด้วยตัวเอง
pyc
ไฟล์ถึงมีอยู่ แต่คุณยังไม่ได้ตอบคำถามถึงวิธีการเรียกใช้ ก็สามารถที่จะมีคุณสมบัติเป็นความคิดเห็นที่ขยายมากไม่ได้เป็นคำตอบ โปรดแก้ไขโพสต์ของคุณเพื่อเพิ่มคำตอบจริง