1. ホーム
  2. python

[解決済み] python3.2用pycompile。

2022-02-11 13:44:57

質問

私はMint 13を使用しており、Python 3.2がインストールされています。 apt-get パッケージ管理システムです。Python 2.7 も 3.2 と一緒にインストールしています。pycompile は python 2.7 のコードをパッケージ化し、python 3.2 のコードに対して例外を投げるもののようです。

いくつかのパッケージをインストールしてみましたが、python 3.2用のpycompileを見つけることができませんでした。どうすれば pycompile を python 3.2 で動作させることができますか?

解決方法は?

py_compile は、Pythonのソースからバイトコードを生成するstdlibモジュールです。 ほとんど必要ありません。

Python 3 のソースコードをコンパイルするには、Python 2.7 のバージョンではなく、Python 3 に含まれる py_compile のバージョンをコマンドラインから使用する必要があります。

$ python3 -mpy_compile your_script.py

pyc-filesが保存されるデフォルトの場所を変更するには、次のようにします。 cfile パラメータを使用します。 py_compile.compile() 機能 .

バイトコードによってスクリプトの実行が速くなることはありますか?

そうかもしれませんね(微々たるものですが)。Pythonのコンパイラは大したことをしないので、速いです。

バイトコードがどのように見えるか、人間が読める形の例を挙げてみましょう。

>>> def f(o):
...     with o:
...         pass
...
>>> import dis   
>>> dis.dis(f)
  2           0 LOAD_FAST                0 (o)
              3 SETUP_WITH               5 (to 11)
              6 POP_TOP             

  3           7 POP_BLOCK           
              8 LOAD_CONST               0 (None)
        >>   11 WITH_CLEANUP        
             12 END_FINALLY         
             13 LOAD_CONST               0 (None)
             16 RETURN_VALUE

重い仕事はすべて、実行時にバイトコードを解釈する Python インタープリタに任されています。

<ブロッククオート

それとも配布用のみですか?

ドキュメントには、カーテンユーザのみが書き込み可能なPythonモジュールのある共有ディレクトリという使用例があります。バイトコードのディスクへのキャッシュを無効にできるので、対応するpycファイルなしで読み取り専用の場所に格納されたpyファイルを使用することができます。

<ブロッククオート

なぜ、ほとんど使われないのですか?

通常、pyc-filesはビルド/インストールプロセスで作成されます。もしpyc-filesがなければ、モジュールをインポートするときにオンザフライで作成することができます。

$ python -c 'import some_module'