web-dev-qa-db-ja.com

Pythonで書かれたプログラムをコンパイルすることはできますか?

Pythonプログラミング言語は初めてです。Pythonで書かれたプログラムをコンパイルできるかどうか疑問に思っていました。

Pythonスクリプトをバイナリコードにコンパイルできる低レベルのプログラミング言語に変換できますか?

Pythonでコーディングすることを検討している開発者は、後でバイナリ配布を行えるように、可能性を開いたままにしておくことができます。

44
bjh Hans

コンパイルPythonコード は開始するのに良い場所だと思います:

Pythonソースコードは、CPythonインタープリターによって自動的にPythonバイトコードにコンパイルされます。コンパイルされたコードは通常、PYC(またはPYO)ファイルに格納され、ソースが更新されるか、必要な場合に再生成されます。

既にPythonがインストールされている人にプログラムを配布するには、PYファイルまたはPYCファイルのいずれかを出荷できます。最近のバージョンでは、PYまたはPYCファイルを含むZipアーカイブを作成し、そして、小さな「ブートストラップスクリプト」を使用して、そのZipアーカイブをパスに追加します。

Pythonプログラムを実行可能ファイルに「コンパイル」するには、Gordon McMillanのインストーラー(代替ダウンロード)(クロスプラットフォーム)、Thomas Hellerのpy2exe(Windows)、Anthony Tuiningaのcx_Freezeなどのバンドルツールを使用します(クロスプラットフォーム)、またはBob Ippolitoのpy2app(Mac)これらのツールは、モジュールとデータファイルを何らかのアーカイブファイルに配置し、モジュールがそのアーカイブからインポートされるように自動的に設定する実行可能ファイルを作成します。アーカイブを実行可能ファイル自体に埋め込みます。

40
Andrew Hare

本当に必要な場合は、Cythonでいつでもコンパイルできます。これによりCコードが生成され、GCCなどのCコンパイラでコンパイルできます。

18
carl

動的言語としてのPythonは、CやCOBOLのように静的にマシンコードに「コンパイル」することはできません。コードの実行には常にインタープリターが必要です。これは、言語の定義により、動的な操作です。

ソースコードをバイトコードで「翻訳」することができます。これは、インタープリターがコードのロードを高速化するための中間プロセスです。コメント、空白スペース、「if」、「def」などの単語でテキストファイルを変換します。 'in'など、バイナリコードですが、背後の操作はまったく同じです。Pythonでも、マシンコードや他の言語ではありません。これは.pycファイルに保存されるものであり、アーキテクチャ間でも移植可能です。

おそらく、必要なのはコードを「コンパイル」することではなく(不可能)、インタープリターを外部にインストールせずにコードを実行できるようにインタープリターを(適切なアーキテクチャに)「埋め込む」ことです。そのためには、py2exeやcx_Freezeなどのすべてのツールを使用できます。

たぶん私はこれについて少し教訓的だ:-P

14
Khelben

コンパイルする必要はありません。最初に使用(インポート)すると、CPythonインタープリターによってコンパイルされます。しかし、本当にコンパイルしたい場合、いくつかのオプションがあります。

Exeにコンパイルするには

または、特定の* .pyファイルのみをコンパイルします。

import py_compile
py_compile.compile("yourpythoncode.py")
10
Eugene Ramirez

冗長性を回避するため、ここで回答を繰り返しません。

私の答えを参照してください here (答えはpython bytecodeへのコンパイルのみを対象とすることに注意してください。)

4

pythonはインタープリター言語なので、スクリプトをコンパイルして実行する必要はありません。 1つを実行する最も簡単な方法は、ターミナルでそのフォルダーに移動し、「python somefile.py」を実行することです。これは、python the python site。

pythonアプリをコンパイルできますが、これは一般に新しい開発者が最初に行う必要のあるものではありません。それがあなたが探しているものである場合は、 py2exe 。これにより、pythonスクリプトが実行され、Windowsベースのコンピューター上のプログラムのような実行可能ファイルとしてパッケージ化されます。また、コンパイルすることもできます。 「Pythonモジュールをバイトコードにコンパイルする」セクションで説明されているpythonを使用した個々のファイル。 このサイト。

2
Seburdis

実行時にpythonをオンザフライでコンパイルします。

(linux)で.pyファイルを実行します:python abc.py

0
joetsuihk