Yanıtlar:
compileallTerminalde kullanabilirsiniz . Aşağıdaki komut özyinelemeli olarak alt dizinlere gidecek ve bulduğu tüm python dosyaları için pyc dosyaları oluşturacaktır. Compileall Kullanmaya şey fazladan yüklemeye gerek kalmaz modül, piton standart kütüphanenin bir parçasıdır. Bu, python2 ve python3 için tamamen aynı şekilde çalışır.
python -m compileall .
-Obayt kodu (.pyo dosyası iso .pyc) derlemesi için bayrağa da bakın .
compileallsite paketleri klasörümde bir yaptım ve bu her şeyi mahvetti
Python'u en son kullandığımdan bu yana uzun zaman geçti, ancak şunu kullanabileceğine inanıyorum py_compile:
import py_compile
py_compile.compile("file.py")
__pycache__/file.cpython-32.pycve bunu dönüş değeri olarak alırsınız.
Python komut dosyalarını bayt koduna derlemenin birkaç yolunu buldum
py_compileTerminalde kullanma :
python -m py_compile File1.py File2.py File3.py ...
-m derlenecek modüllerin adını belirtir.
Veya dosyaların etkileşimli derlenmesi için
python -m py_compile -
File1.py
File2.py
File3.py
.
.
.Kullanarak py_compile.compile:
import py_compile
py_compile.compile('YourFileName.py')Kullanarak py_compile.main():
Aynı anda birkaç dosya derler.
import py_compile
py_compile.main(['File1.py','File2.py','File3.py'])
Liste istediğiniz kadar büyüyebilir. Alternatif olarak, ana dosya listelerini ve hatta komut satırı bağımsız değişkenlerindeki dosya adlarını iletebilirsiniz.
Veya, ['-']ana olarak geçerseniz, dosyaları etkileşimli olarak derleyebilir.
Kullanarak compileall.compile_dir():
import compileall
compileall.compile_dir(direname)
Verilen dizinde bulunan her bir Python dosyasını derler.
Kullanarak compileall.compile_file():
import compileall
compileall.compile_file('YourFileName.py')Aşağıdaki bağlantılara bir göz atın:
py_compileve compileallDEĞİL py_compile.pyya compileall.py. Başka bir deyişle, python3 -m py_compile PYTHON_FILENAMEveya olmalıdır python3 -m compileall PYTHON_FILES_DIRECTORY.
Compileall kullanırdım . Hem komut dosyalarından hem de komut satırından iyi çalışır. Dahili olarak kullandığı daha önce bahsedilen py_compile'den biraz daha yüksek seviyeli bir modül / araçtır .
compileallkarşılık gelen .pycdosyanın zaten güncel olduğu dosyaları atlama mantığını içermiyor, değil mi?
compileallzaten güncel olan dosyaları atlıyor .pyc(Python 2.7.11 ile test edildi)
python -m compileall <pythonic-project-name>
hangi markaları tüm derlemek .pyiçin .pycalt klasörler bulunan projede.
python3 -m compileall <pythonic-project-name>
hangi markaları tüm derlemek .pyiçin __pycache__alt klasörler bulunan projede klasörler.
Veya bu yazıdaki kızarma ile :
.pycKlasörlerde Python2'de olduğu gibi aynı dosya düzenini aşağıdakileri kullanarak uygulayabilirsiniz :
python3 -m compileall -b <pythonic-project-name>Seçenek dosyaların
-bçıktısını.pyceski konumlarına tetikler (yani Python2'deki ile aynı).
Komut satırı kullanıyorsanız python -m compileall <argument>, python kodunu python ikili koduna derlemek için kullanın . Ör:python -m compileall -x ./*
Veya kitaplığınızı bayt koduna derlemek için bu kodu kullanabilirsiniz.
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)
bakmak ☞ docs.python.org için ayrıntılı belgeler