วิธีการเรียกใช้ไฟล์. pyc (รวบรวมไพ ธ อน)


18

เมื่อฉันรวบรวมไฟล์ไพ ธ อนฉันจะได้รับไฟล์ * .pyc เมื่อฉันพยายามเรียกใช้ฉันได้รับข้อความแจ้งว่าไม่มีโปรแกรมสำหรับใช้งาน เมื่อฉันค้นหาโปรแกรมออนไลน์ผ่านตัวเลือกนั้นมันบอกว่าไม่มีเลย ใครสามารถช่วยฉันเรียกใช้ไฟล์ที่นั่นได้บ้าง

คำตอบ:


24

เนื่องจากไฟล์ไพ ธ อนของคุณถูกคอมไพล์ด้วยไบต์คุณจำเป็นต้องเรียกใช้ผ่านตัวแปลหลาม

python yourfile.pyc

เหตุผลที่คุณสามารถเรียกใช้ไฟล์. py ของคุณโดยตรงได้เนื่องจากคุณมีสาย

#!/usr/bin/python

หรือ

#!/usr/bin/env python

หรือสิ่งที่คล้ายกันในบรรทัดแรกในไฟล์. py สิ่งนี้บอกให้เชลล์ของคุณดำเนินการส่วนที่เหลือของไฟล์ด้วย python interpreter


3
เพื่อเติมเต็มคำตอบนี้: ไฟล์. pyc ไม่ได้รวบรวมในแง่ที่เข้มงวดที่สุดของคำศัพท์เนื่องจากไม่ใช่รหัสเครื่องดั้งเดิม มันเป็นอย่างที่ @tomdachi เขียนโดยเฉพาะโค้ดไพ ธ อนของไพ ธ อน
Pierre-Antoine

ในความเป็นจริง pyc เท่านั้นที่ถูกสร้างขึ้นเมื่อคุณนำเข้าไฟล์ py ดังนั้นจึงไม่มีประโยชน์ที่จะเรียกใช้ไฟล์ pyc!
哈哈哈患有癌并且卓越的工程师陆家嘴搞金融显然是为了为了理想哈哈哈哈哈哈

2

ในการคอมไพล์ไฟล์. pyc python3 ที่คอมไพล์ฉันใช้uncompyle6ใน Ubuntu OS ปัจจุบันของฉันดังนี้:

  1. การติดตั้ง uncompyle6:

    pip3 install uncompyle6
  2. ในการสร้างไฟล์. py จากไฟล์. pyc ให้รัน:

    uncompyle6 -o . your_filename.pyc
  3. ไฟล์. py ใหม่โดยอัตโนมัติจะถูกสร้างขึ้นด้วยชื่อไฟล์. pyc ที่มีอยู่เดิม


-1

Python รวบรวมไฟล์. py และบันทึกเป็นไฟล์. pyc เพื่อให้สามารถอ้างอิงได้ในการเรียกใช้ครั้งต่อไป . pyc มีการรวบรวม bytecode ของไฟล์ต้นฉบับ Python ซึ่งเป็นสิ่งที่ Python interpreter รวบรวมแหล่งที่มา รหัสนี้จะถูกดำเนินการโดยเครื่องเสมือนของ Python ไม่มีอันตรายใด ๆ ในการลบพวกเขา (.pyc) แต่พวกเขาจะประหยัดเวลาในการรวบรวมหากคุณทำการประมวลผลจำนวนมาก

Python เป็นภาษาที่ถูกตีความเมื่อเทียบกับภาษาที่รวบรวมแม้ว่าความแตกต่างสามารถเลือนลางเนื่องจากการมีอยู่ของคอมไพเลอร์ bytecode การคอมไพล์มักหมายถึงการแปลงเป็นรหัสเครื่องซึ่งเป็นสิ่งที่ทำงานได้เร็วที่สุด แต่ล่ามจะใช้ข้อความที่มนุษย์อ่านและดำเนินการได้ พวกเขาอาจทำสิ่งนี้ด้วยสเตจระดับกลาง

ตัวอย่างเช่นเมื่อคุณเรียกใช้แฟ้มแหล่งที่มา myprog.py หลามล่ามลักษณะแรกเพื่อดูว่าmyprog.pycมีอยู่ (ซึ่งเป็นไบต์รหัสรุ่นเรียบเรียงmyprog.py) และถ้ามันเป็นเรื่องที่ผ่านมาเมื่อเร็ว ๆ myprog.pyนี้หรือมากกว่า ถ้าเป็นเช่นนั้นล่ามก็จะเรียกใช้ ถ้ามันไม่ได้อยู่หรือmyprog.pyคือที่ผ่านมามากกว่านั้น (หมายถึงคุณมีการเปลี่ยนแปลงแฟ้มแหล่งที่มา) ล่ามคอมไพล์เป็นครั้งแรกที่จะmyprog.pymyprog.pyc

มีข้อยกเว้นอย่างหนึ่งสำหรับตัวอย่างด้านบน หากคุณใส่#! /usr/bin/env pythonบรรทัดแรกของmyprog.pyให้ทำให้มันปฏิบัติการแล้วเรียกใช้myprog.pyด้วยตัวเอง


1
ยินดีต้อนรับสู่ถาม Ubuntu ! นี่เป็นคำอธิบายที่ดีว่าทำไมpycไฟล์ถึงมีอยู่ แต่คุณยังไม่ได้ตอบคำถามถึงวิธีการเรียกใช้ ก็สามารถที่จะมีคุณสมบัติเป็นความคิดเห็นที่ขยายมากไม่ได้เป็นคำตอบ โปรดแก้ไขโพสต์ของคุณเพื่อเพิ่มคำตอบจริง
Melebius
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.