Bagaimana cara mengkompilasi file python?

57

Saya sudah mulai belajar python dan saya juga pengguna baru untuk Ubuntu. Saya perlu tahu cara mengkompilasi .pyfile. Saya sudah mencoba dengan perintahnya

python "hello.py"

Apa cara lain untuk mengkompilasi python?

Bharath Lakshman
sumber

Jawaban:

58

Menambah jawaban Bryan, jika Anda hanya ingin mengkompilasi file atau banyak file dari terminal, py_compilemodul dapat dieksekusi sebagai skrip dengan cara berikut:

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

Yamaho
sumber
9
Jika Anda mengompilasi karena menginginkan kecepatan, Anda juga dapat menambahkan -Otanda, seperti python -O -m py_compile …, yang akan “mengaktifkan optimisasi dasar”. Itu terutama menghapus assertpernyataan dan if __debug__kode, jadi untuk sebagian besar kode itu tidak berpengaruh. Lihat man pythondan “Apa yang dilakukan optimasi Python…?” Untuk detailnya.
Rory O'Kane
26

Perlu diketahui juga bahwa Anda tidak perlu mengkompilasi .pyfile untuk menjalankannya. Python adalah bahasa yang ditafsirkan, dan Anda dapat menjalankan skrip secara langsung, baik menggunakan:

python hello.py

Atau buat skrip Anda dapat dieksekusi dengan menambahkan #!/usr/bin/env pythonke bagian atas skrip, membuat file tersebut dapat dieksekusi dengan chmod +x hello.pydan kemudian menjalankan:

./hello.py

Fakta bahwa Python secara internal mengkompilasi .pyskrip Anda untuk bytecode .pycfile untuk alasan kinerja adalah detail implementasi, dan kecuali Anda memiliki alasan kuat untuk melakukannya, biarkan python sendiri yang memutuskan kapan dan jika ingin dikompilasi.

MestreLion
sumber
Saya bingung mengapa ini berhasil. Bukankah interpreter Python harus dapat membaca skrip untuk menjalankannya? Jika Anda hanya memberikan izin eksekusi ( chmod +x), bagaimana penerjemah membaca skrip?
yellow01
@ yellow01: ketika Anda menjalankan skrip yang berisi "shebang", yaitu, baris pertama dimulai dengan #!/path/to/interpreter, kernel sebenarnya mengeksekusi apa pun yang dideklarasikan di sana, melewati jalur skrip sebagai argumen. Dalam contoh saya, ketika Anda menjalankan ./hello.pyapa yang sebenarnya dieksekusi adalah /usr/bin/env python ./hello.py. Lihat en.wikipedia.org/wiki/Shebang_(Unix)
MestreLion
@ yellow01 Anda benar bahwa penerjemah akan memerlukan izin membaca setelah memulai proses yang dijelaskan MestreLion. Namun, chmod +xhibah mengeksekusi, dan tidak menyentuh izin yang ada sehingga mungkin itu dapat dibaca selain sekarang sedang dieksekusi.
Spectra
11

Lihat tautan ini Kompilasi dengan Python

Di tengah halaman, ia berbicara tentang modul py_compile yang dapat diimpor. Sintaksnya adalah sebagai berikut:

import py_compile

py_compile.compile("file.py")

Metode kompilasi ini tidak akan menjalankan modul seperti menjalankan python file.py.

Ada juga metode yang mengkompilasi seluruh pohon direktori tetapi saya akan membiarkan Anda memeriksa tautan untuk melihat bagaimana itu dijalankan.

Semoga ini membantu.

Bryan
sumber
4

Anda dapat mengkompilasi skrip Python ke kode biner menggunakan berbagai metode, tetapi saya telah menemukan bahwa menggunakan Nuitka lebih efisien.

Nuitka adalah kompiler Python-ke-C ++ yang mendukung hampir semua versi python.

Sintaks perintah semudah

nuitka hello.py

Goto http://nuitka.net/doc/user-manual.html untuk informasi lebih lanjut.

salafi
sumber
6
Lebih hemat gimana? Mengapa ada orang yang mau menggunakannya?
muru
nuitka memang sangat berguna - misalnya, memungkinkan Anda untuk mengirimkan program Python ke komputer di mana Python tidak diinstal. Tetapi saat nuitka mengkompilasi program Python ke kode mesin C ++, Anda dapat mengelak dari itu.
user258532