จะรวบรวมไฟล์ไพ ธ อนได้อย่างไร?


57

ฉันได้เริ่มเรียนรู้ python และฉันยังเป็นผู้ใช้ใหม่ของ Ubuntu ฉันจำเป็นต้องรู้วิธีการรวบรวม.pyไฟล์ ฉันได้ลองกับคำสั่ง

python "hello.py"

วิธีอื่น ๆ ในการรวบรวมไพ ธ อนคืออะไร?

คำตอบ:


58

การเพิ่มคำตอบของไบรอันถ้าคุณเพียงต้องการรวบรวมไฟล์หรือไฟล์จำนวนมากจากเทอร์มินัลpy_compileโมดูลนั้นสามารถเรียกใช้งานเป็นสคริปต์ในลักษณะดังต่อไปนี้:

python -m py_compile fileA.py fileB.py fileC.py ...


9
หากคุณกำลังรวบรวมเพราะคุณต้องการความเร็วคุณสามารถเพิ่มการ-Oตั้งค่าสถานะเช่นpython -O -m py_compile …ซึ่งจะ“ เปิดการปรับแต่งพื้นฐาน” โดยส่วนใหญ่แล้วจะเป็นการตัดassertคำสั่งและif __debug__รหัสออกไปดังนั้นสำหรับรหัสส่วนใหญ่จะไม่มีผลกระทบใด ๆ ดูman pythonและ“ การเพิ่มประสิทธิภาพ Python ทำอะไร…”เพื่อดูรายละเอียด
Rory O'Kane

26

โปรดระวังว่าคุณไม่จำเป็นต้องรวบรวม.pyไฟล์เพื่อใช้งาน Python เป็นภาษาที่ตีความและคุณสามารถเรียกใช้สคริปต์โดยตรงโดยใช้:

python hello.py

หรือทำให้สคริปต์ของคุณทำงานได้โดยการเพิ่ม#!/usr/bin/env pythonที่ด้านบนสุดของสคริปต์ทำให้ไฟล์chmod +x hello.pyนั้นทำงานด้วยแล้วเรียกใช้:

./hello.py

ความจริงที่ว่า Python รวบรวม.pyสคริปต์ของคุณไปยัง.pycไฟล์bytecode เพื่อเหตุผลด้านประสิทธิภาพคือรายละเอียดการนำไปปฏิบัติและถ้าคุณไม่มีเหตุผลอันสมควรที่จะทำเช่นนั้นให้ไพ ธ อนตัดสินใจเองเมื่อใดและจะรวบรวม


ฉันสับสนว่าทำไมงานนี้ Python interpreter ไม่จำเป็นต้องอ่านสคริปต์เพื่อเรียกใช้หรือไม่ หากคุณให้สิทธิ์ดำเนินการเท่านั้น ( chmod +x) ล่ามจะอ่านสคริปต์อย่างไร
yellow01

@ yellow01: เมื่อคุณรันสคริปต์ที่มี "shebang" เช่นบรรทัดแรกเริ่มต้นด้วย#!/path/to/interpreterเคอร์เนลจะดำเนินการสิ่งที่มีการประกาศที่นั่นจริงผ่านเส้นทางสคริปต์เป็นอาร์กิวเมนต์ ในตัวอย่างของฉันเมื่อคุณเรียกใช้สิ่งที่จะดำเนินการจริง./hello.py /usr/bin/env python ./hello.pyดูen.wikipedia.org/wiki/Shebang_(Unix)
MestreLion

@ yellow01 คุณถูกต้องที่ล่ามจะต้องมีสิทธิ์ในการอ่านเมื่อเริ่มต้นผ่านกระบวนการ MestreLion อธิบาย อย่างไรก็ตามchmod +xมอบให้ดำเนินการและไม่ได้สัมผัสสิทธิ์ที่มีอยู่ดังนั้นสันนิษฐานว่ามันสามารถอ่านได้นอกเหนือไปจากตอนนี้จะปฏิบัติได้
สเปกตรัม

11

ลองดูที่ลิงค์นี้รวบรวมใน Python

ที่ตรงกลางของหน้านั้นจะพูดถึงโมดูล py_compile ที่สามารถนำเข้าได้ ไวยากรณ์มีดังนี้:

import py_compile

py_compile.compile("file.py")

วิธีการรวบรวมนี้จะไม่เรียกใช้งานโมดูลเช่นการเรียกใช้ python file.py

นอกจากนี้ยังมีวิธีการที่รวบรวมทรีไดเรกทอรีทั้งหมด แต่ฉันจะให้คุณตรวจสอบลิงก์เพื่อดูวิธีการใช้งาน

หวังว่านี่จะช่วยได้



4

คุณสามารถคอมไพล์สคริปต์ Python ให้เป็นรหัสไบนารี่โดยใช้วิธีการต่าง ๆ แต่ฉันพบว่าการใช้ Nuitka นั้นมีประสิทธิภาพมากกว่า

Nuitka เป็นคอมไพเลอร์ Python-to-C ++ ที่รองรับไพ ธ อนเกือบทุกรุ่น

ไวยากรณ์คำสั่งนั้นง่ายเหมือน

nuitka hello.py

ไปที่http://nuitka.net/doc/user-manual.htmlสำหรับข้อมูลเพิ่มเติม


6
มีประสิทธิภาพมากขึ้นได้อย่างไร ทำไมทุกคนต้องการใช้มัน
muru

แน่นอนว่า nuitka นั้นมีประโยชน์มาก - ช่วยให้คุณสามารถจัดส่งโปรแกรม Python ไปยังคอมพิวเตอร์ที่ไม่ได้ติดตั้ง Python แต่ในขณะที่ nuitka รวบรวมโปรแกรม Python ไปยังรหัสเครื่อง C ++ คุณสามารถหลีกเลี่ยงได้
258532
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.