これは私のテストスイート用です。
一時フォルダーに自動生成された Python パッケージがあります。すべての.pyファイルです。.pycこれらをプログラムで (a)と (b)のファイルにコンパイルしたいと考えてい.pyoます。(1 つのテストでは が実行され.pyc、別のテストでは が実行されます.pyo。)もちろん、これはアクティブなインタープリターで実行する必要があります。モジュールをインポートしたくありません。コンパイルするだけです。
これどうやってするの?
これは私のテストスイート用です。
一時フォルダーに自動生成された Python パッケージがあります。すべての.pyファイルです。.pycこれらをプログラムで (a)と (b)のファイルにコンパイルしたいと考えてい.pyoます。(1 つのテストでは が実行され.pyc、別のテストでは が実行されます.pyo。)もちろん、これはアクティブなインタープリターで実行する必要があります。モジュールをインポートしたくありません。コンパイルするだけです。
これどうやってするの?
compileall.pyPython lib ディレクトリには、 (例: )というスクリプトがあります/usr/lib/python2.6/compileall.py。
コード内で、生成されたコードを含むディレクトリを指すos.spawnlの呼び出しを (たとえば、 を使用して) 生成します。compileall.pyを使用して呼び出すと、ファイルpython -Oが生成されます。.pyoそれを使用して呼び出すと、ファイルpythonが生成され.pycます。
秘訣は、適切なバージョンの Python インタープリターで呼び出すことだと思います。
compileall.pypy_compileフードの下で使用します。
py_compileモジュールを見てみたいかもしれません。pyo残念ながら、とのどちらかを選択することはできませんpyc。
Python モジュール (*.py) をインポートしたディレクトリに書き込み権限がある限り、同じ名前の *.pyc ファイルが生成されることに注意してください。さらに、*.pyc と *.pyoは、モジュールのロード時間の短縮を除いて、プログラムにパフォーマンスを追加しません。