web-dev-qa-db-ja.com

pythonスクリプトをPythonインストールなしでPCで動作するようにスクリプトをコンパイルすることはできますか?

Pythonスクリプト:

myscript.py

私はそれを次のように実行しています:

python D:\myscript.py

ただし、Pythonがインストールされ、PATH環境変数に含まれている必要があります。

Python実行可能ファイルをPythonスクリプトで「バンドル」することで、他の人がPythonなしで自分のPCで実行できるようにすることは、どういうわけか可能ですか?

Windowsでのみ動作する場合は問題ありません。

編集:

compile.pyを試した後、次のエラーが発生します。

Traceback (most recent call last):
  File "D:\stuff\compile.py", line 4, in <module>
    import py2exe
ImportError: No module named py2exe
27
Richard Knop

これを行う1つの方法を次に示します(Windowsの場合、py2exeを使用)。

まず、Windowsボックスに py2exe をインストールします。

次に、python compile.pyという名前のスクリプトを次のように作成します。

import sys
from distutils.core import setup
import py2exe

entry_point = sys.argv[1]
sys.argv.pop()
sys.argv.append('py2exe')
sys.argv.append('-q')

opts = {
    'py2exe': {
        'compressed': 1,
        'optimize': 2,
        'bundle_files': 1
    }
}

setup(console=[entry_point], options=opts, zipfile=None)

PythonスクリプトをWindows実行可能ファイルにコンパイルするには、プログラムを引数としてこのスクリプトを実行します。

$ python compile.py myscript.py

Pythonインタープリターが内部でコンパイルされたバイナリ実行可能ファイル(EXE)を吐き出します。その後、この実行可能ファイルを配布するだけです。

24
Corey Goldberg

PyInstaller はうまく機能しており、upxを使用しているため、かなり小さなパッケージを生成しています。その依存関係の検出は、同時にpy2exeよりも優れていました。最近はあまり開発されていないようで、おそらく3.xでは動作しません。

リポジトリ内のソースは、1.4パッケージよりも優れた出発点です。

Python 2.6+での作業についてのwikiページも参照してください。

機能リストから:

  • Pythonがインストールされていないコンピュータで動作する、標準の実行可能ファイルへのPythonプログラムのパッケージ化。
  • マルチプラットフォーム:Windows(32ビットおよび64ビット)、Linux(32ビットおよび64ビット)、Mac OS X(現時点では32ビットのみ。MacOsCompatibilityを参照)で動作します。
  • マルチバージョン:Pythonのすべてのバージョンで動作します。注:WindowsでPython 2.6+を使用している場合は、Python26Winを参照してください。
  • 柔軟なパッケージモード:
  • 単一のディレクトリ:プログラムで使用される実行可能ファイルとすべての外部バイナリモジュール(.dll、.pyd、.so)を含むディレクトリを構築します。
  • 単一ファイル:完全に自己完結型の単一の実行可能ファイルを作成します。これは、外部依存関係なしで実行されます。
  • カスタム:PyInstallerを自動化して、Pythonの単純なスクリプトファイルを使用して、必要なパッケージモードを実行できます。
  • 多くの3番目のパッケージ(非表示のインポート、外部データファイルなど)を明示的にインテリジェントにサポートし、そのままでPyInstallerで動作するようにします(SupportedPackagesを参照)。
  • 完全な単一ファイルのEggのサポート:必要な.Eggファイルの依存関係が自動的に検査され、バンドルされます。また、実行時にEgg固有のすべての機能(エントリポイントなど)もサポートされます。
  • 部分的なディレクトリEggのサポート:必要な.Eggディレクトリの依存関係が自動的に検査され、バンドルされますが、Egg固有の機能は実行時に機能しません。
  • Ctypesを介して使用されるバイナリライブラリの自動サポート(詳細については、CtypesDependencySupportを参照してください)。
  • 有名なUPXコンプレッサーによる自動バイナリパッキングのサポート。
  • オプションのコンソールモード(実行時の標準出力と標準エラーを参照)。
  • Windows固有の機能:
  • コード署名実行可能ファイルのサポート。
  • CRTの完全自動サポート:MSVCR * .DLL、再頒布インストーラ、マニフェストなどを手動で配布する必要はありません。どこでも動作する真の1ファイルアプリケーション!
  • 選択可能な実行可能アイコン。
  • 完全に設定可能なバージョンリソースセクションと実行可能ファイルのマニフェスト。
  • COMサーバー構築のサポート。
  • Mac固有の機能:
  • バンドルの予備サポート(MacOsCompatibilityを参照)
11
Binary Phile

py2exe のようなものが必要です。

10
unode

py2execx-freeze または(Mac OS Xのみ) py2app のような複数のソリューションがあります。

9
Michael

ここ はそれらのリストです。

5
ʇsәɹoɈ