回答:
compileall端末で使用できます。次のコマンドは、サブディレクトリに再帰的に移動し、見つかったすべてのpythonファイルのpycファイルを作成します。compileallのあなたがそれを使用するためには何の余分をインストールする必要はありませんので、モジュールは、Pythonの標準ライブラリの一部です。これはpython2とpython3でまったく同じように機能します。
python -m compileall .
-Oバイトコード(.pyoファイルiso .pyc)コンパイルのフラグも確認してください。
compileallて自分のサイトパッケージフォルダーを実行し、それがすべてを台無しにしました
私が最後にPythonを使用してから久しぶりですが、以下を使用できると思いますpy_compile。
import py_compile
py_compile.compile("file.py")
__pycache__/file.cpython-32.pycなり、それを戻り値として取得します。
Pythonスクリプトをバイトコードにコンパイルする方法をいくつか見つけました
py_compile端末での使用:
python -m py_compile File1.py File2.py File3.py ...
-m コンパイルするモジュール名を指定します。
または、ファイルのインタラクティブなコンパイル用
python -m py_compile -
File1.py
File2.py
File3.py
.
.
.使用py_compile.compile:
import py_compile
py_compile.compile('YourFileName.py')使用py_compile.main():
一度にいくつかのファイルをコンパイルします。
import py_compile
py_compile.main(['File1.py','File2.py','File3.py'])
リストは、必要に応じて長くすることができます。別の方法として、メインでファイルのリストを渡すことや、コマンドライン引数でファイル名を渡すこともできます。
または、['-']main を渡すと、インタラクティブにファイルをコンパイルできます。
使用compileall.compile_dir():
import compileall
compileall.compile_dir(direname)
指定されたディレクトリにあるすべてのPythonファイルをコンパイルします。
使用compileall.compile_file():
import compileall
compileall.compile_file('YourFileName.py')以下のリンクをご覧ください。
py_compileとcompileallしませんpy_compile.pyかcompileall.py。つまり、python3 -m py_compile PYTHON_FILENAMEまたはである必要がありますpython3 -m compileall PYTHON_FILES_DIRECTORY。
私はcompileallを使用します。スクリプトとコマンドラインの両方からうまく機能します。これは、内部で使用する前述のpy_compileよりも少し高いレベルのモジュール/ツールです。
compileall対応する.pycファイルが既に最新のファイルをスキップするロジックは含まれていませんか?
compileallは既に最新のファイル.pyc(Python 2.7.11でテスト済み)をスキップしません
python -m compileall <pythonic-project-name>
サブフォルダーを含むプロジェクトですべて.pyをコンパイル.pycします。
python3 -m compileall <pythonic-project-name>
これはコンパイル全てなり.pyに__pycache__サブフォルダを含んでいたプロジェクト内のフォルダ。
または、この投稿の褐色化:
以下を使用すること
.pycで、Python2 と同じフォルダー内のファイルのレイアウトを適用できます。
python3 -m compileall -b <pythonic-project-name>このオプション
-bは.pyc、レガシーロケーションへのファイルの出力をトリガーします(つまり、Python2と同じ)。
コマンドラインを使用python -m compileall <argument>している場合は、PythonコードをPythonバイナリコードにコンパイルするために使用します。例:python -m compileall -x ./*
または、 このコードを使用して、ライブラリをバイトコードにコンパイルできます。
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)
詳細なドキュメントについては、☞docs.python.orgをご覧ください。