Jawaban:
Anda bisa menggunakannya compilealldi 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 .
-Oflagnya, untuk kompilasi bytecode (.pyo file iso .pyc).
compileallpada folder situs-paket saya dan itu mengacaukan segalanya
Sudah lama sejak saya terakhir menggunakan Python, tapi saya yakin Anda bisa menggunakan py_compile:
import py_compile
py_compile.compile("file.py")
__pycache__/file.cpython-32.pycdan Anda mendapatkan itu sebagai nilai kembali.
Saya menemukan beberapa cara untuk mengkompilasi skrip python ke bytecode
Menggunakan py_compiledi terminal:
python -m py_compile File1.py File2.py File3.py ...
-m menentukan nama modul yang akan dikompilasi.
Atau, untuk kompilasi file interaktif
python -m py_compile -
File1.py
File2.py
File3.py
.
.
.Menggunakan py_compile.compile:
import py_compile
py_compile.compile('YourFileName.py')Menggunakan py_compile.main():
Ini mengkompilasi beberapa file sekaligus.
import py_compile
py_compile.main(['File1.py','File2.py','File3.py'])
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():
import compileall
compileall.compile_dir(direname)
Ini mengkompilasi setiap file Python tunggal yang ada di direktori yang disediakan.
Menggunakan compileall.compile_file():
import compileall
compileall.compile_file('YourFileName.py')Lihatlah tautan di bawah ini:
py_compiledan compileallTIDAK py_compile.pyatau compileall.py. Dengan kata lain, seharusnya python3 -m py_compile PYTHON_FILENAMEatau python3 -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.
compilealltidak termasuk logika untuk melewatkan file yang .pycfile terkait sudah mutakhir, bukan?
compileallmelewatkan file yang sudah memiliki yang terbaru .pyc(diuji dengan Python 2.7.11)
python -m compileall <pythonic-project-name>
yang merek mengkompilasi semua .pyuntuk .pycdalam proyek yang berisi subfolder.
python3 -m compileall <pythonic-project-name>
yang membuat kompilasi semua .pyke __pycache__folder dalam proyek yang berisi subfolder.
Atau dengan browning dari pos ini :
Anda bisa menerapkan tata letak
.pycfile yang sama di folder seperti di Python2 dengan menggunakan:
python3 -m compileall -b <pythonic-project-name>Opsi
-bmemicu output.pycfile ke lokasi-legacy mereka (yaitu sama seperti di Python2).
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.
import compileall
import os
lib_path = "your_lib_path"
build_path = "your-dest_path"
compileall.compile_dir(lib_path, force=True, legacy=True)
def compile(cu_path):
for file in os.listdir(cu_path):
if os.path.isdir(os.path.join(cu_path, file)):
compile(os.path.join(cu_path, file))
elif file.endswith(".pyc"):
dest = os.path.join(build_path, cu_path ,file)
os.makedirs(os.path.dirname(dest), exist_ok=True)
os.rename(os.path.join(cu_path, file), dest)
compile(lib_path)
lihat ☞ docs.python.org untuk dokumentasi terperinci