Untuk beberapa alasan, saya tidak dapat bergantung pada pernyataan "impor" Python untuk menghasilkan file .pyc secara otomatis
Apakah ada cara untuk mengimplementasikan fungsi sebagai berikut?
def py_to_pyc(py_filepath, pyc_filepath):
...
Anda bisa menggunakannya compileall
di terminal. Perintah berikut akan secara rekursif masuk ke sub direktori dan membuat file pyc untuk semua file python yang ditemukannya. The compileall Modul merupakan bagian dari python perpustakaan standar, sehingga Anda tidak perlu menginstal apa pun untuk menggunakannya. Cara kerjanya persis sama untuk python2 dan python3.
python -m compileall .
-O
flagnya, untuk kompilasi bytecode (.pyo file iso .pyc).compileall
pada folder situs-paket saya dan itu mengacaukan segalanyaAnda dapat mengkompilasi file individual dari baris perintah dengan:
sumber
Sudah lama sejak saya terakhir menggunakan Python, tapi saya yakin Anda bisa menggunakan
py_compile
:sumber
__pycache__/file.cpython-32.pyc
dan Anda mendapatkan itu sebagai nilai kembali.Saya menemukan beberapa cara untuk mengkompilasi skrip python ke bytecode
Menggunakan
py_compile
di terminal:-m
menentukan nama modul yang akan dikompilasi.Atau, untuk kompilasi file interaktif
Menggunakan
py_compile.compile
:Menggunakan
py_compile.main()
:Ini mengkompilasi beberapa file sekaligus.
Daftar dapat tumbuh selama yang Anda inginkan. Atau, Anda dapat dengan jelas melewati daftar file dalam nama file utama atau bahkan dalam argumen baris perintah.
Atau, jika Anda meneruskan
['-']
main maka dapat mengkompilasi file secara interaktif.Menggunakan
compileall.compile_dir()
:Ini mengkompilasi setiap file Python tunggal yang ada di direktori yang disediakan.
Menggunakan
compileall.compile_file()
:Lihatlah tautan di bawah ini:
https://docs.python.org/3/library/py_compile.html
https://docs.python.org/3/library/compileall.html
sumber
py_compile
dancompileall
TIDAKpy_compile.py
ataucompileall.py
. Dengan kata lain, seharusnyapython3 -m py_compile PYTHON_FILENAME
ataupython3 -m compileall PYTHON_FILES_DIRECTORY
.Saya akan menggunakan compileall . Ini berfungsi baik dari skrip dan dari baris perintah. Ini adalah modul / alat yang sedikit lebih tinggi daripada py_compile yang telah disebutkan yang juga digunakan secara internal.
sumber
compileall
tidak termasuk logika untuk melewatkan file yang.pyc
file terkait sudah mutakhir, bukan?compileall
melewatkan file yang sudah memiliki yang terbaru.pyc
(diuji dengan Python 2.7.11)Di Python2 Anda bisa menggunakan:
yang merek mengkompilasi semua
.py
untuk.pyc
dalam proyek yang berisi subfolder.Di Python3 Anda bisa menggunakan:
yang membuat kompilasi semua
.py
ke__pycache__
folder dalam proyek yang berisi subfolder.Atau dengan browning dari pos ini :
sumber
Untuk mencocokkan persyaratan pertanyaan asli (jalur sumber dan jalur tujuan) kodenya harus seperti itu:
Jika kode input memiliki kesalahan maka pengecualian py_compile.PyCompileError dinaikkan.
sumber
Ada dua cara untuk melakukan ini
Jika Anda menggunakan baris perintah gunakan
python -m compileall <argument>
untuk mengkompilasi kode python ke kode biner python. Ex:python -m compileall -x ./*
Atau, Anda dapat menggunakan kode ini untuk mengkompilasi perpustakaan Anda ke dalam byte-code.
lihat ☞ docs.python.org untuk dokumentasi terperinci
sumber