私はPythonアプリケーションを構築していますが、クライアントにPythonとモジュールのインストールを強制したくありません。
では、Pythonスクリプトをスタンドアロンの実行可能ファイルにコンパイルする方法はありますか?
私はPythonアプリケーションを構築していますが、クライアントにPythonとモジュールのインストールを強制したくありません。
では、Pythonスクリプトをスタンドアロンの実行可能ファイルにコンパイルする方法はありますか?
回答:
既に回答されているようにpy2exeを使用し、cythonを使用して、WindowsやLinux などのCコンパイル済みファイルでキー.py
ファイルを変換.pyc
できます。一般的なファイルやファイルよりも元に戻すのは非常に困難です(パフォーマンスも向上します)。.dll
.so
.pyo
.pyc
PyInstallerを使用して、スタンドアロンの実行可能ファイルとしてPythonプログラムをパッケージ化できます。Windows、Linux、Macで動作します。
PyInstallerクイックスタート
PyPIからPyInstallerをインストールします。
pip install pyinstaller
プログラムのディレクトリに移動して実行します。
pyinstaller yourprogram.py
これにより、というサブディレクトリにバンドルが生成され
dist
ます。詳細なウォークスルーについては、マニュアルを参照してください。
Nuitkaを調査することをお 勧めします。Pythonソースコードを受け取り、C ++ API呼び出しに変換します。次に、実行可能なバイナリ(LinuxのELF)にコンパイルされます。それは数年前から存在し、さまざまなバージョンのPythonをサポートしています。
使用すると、おそらくパフォーマンスも向上します。オススメです。
Python 2.7を使用してWindowsでスタンドアロンファイルを作成するための有用な情報をまとめたいのですが。
私はpy2exeを使用し、それは動作しますが、いくつかの問題がありました。
Windows 64ビットで単一ファイルを作成する場合のいくつかの問題が示されています。py2exeでbundle_files = 1を使用しても機能しません。
これを機能させるには、setup.pyファイルを作成する必要があります。http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
セットアップファイルにパッケージをインポートすることで解決する必要がある依存関係に問題がありました。
PyQtと一緒に機能させることができませんでした。
この最後の理由で、PyInstaller http://www.pyinstaller.org/を試してみました。
私の意見では、次の理由からはるかに優れています。
たとえば、次の行を含む.batファイルを作成することをお勧めします(pyinstaller.exeはWindowsパスにある必要があります)。
pyinstaller.exe --onefile MyCode.py
他のオプション(https://pyinstaller.readthedocs.io/en/stable/usage.html#options)の中で1つのファイルを作成できます。
PyInstallerとマルチプロセッシングパッケージを使用して問題が1つだけありましたが、このレシピを使用することで解決しました:https : //github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing。
ですから、少なくともpython 2.7の場合、PyInstallerがより優れたシンプルなオプションだと思います。
--onefile
実行可能ファイルapi-ms-win-crt-runtime-l1-1-0.dll
は、vcredist
パッケージを介してインストールする必要のあるライブラリー(または他のライブラリー)とリンクする必要があるため、このフラグはWindowsでの移植性を高めるのに役立ちません。したがって、依存関係はまだ存在しており、実行前にインストールする必要があります。
はい、Pythonスクリプトをスタンドアロンの実行可能ファイルにコンパイルすることは可能です。
PyInstallerを使用すると、Windows、Linux、Mac OS X、FreeBSD、Solaris、AIXで Pythonプログラムをスタンドアロンの実行可能ファイルに変換できます。これは、推奨されるコンバーターの1つです。
py2exeは、 PythonスクリプトをWindowsプラットフォームでのみ実行可能ファイルに変換します。
Cythonは、Pythonプログラミング言語と拡張Cythonプログラミング言語の両方の静的コンパイラーです。
3つ目のオプションはcx_Freeze
、クロスプラットフォームのです。
cx_Freeze
です。2017年末以降、pypiのリリースはリストされていません。このプロジェクトは中止されましたか?
py2exeを使用します。以下のセットアップファイルを使用します。
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import matplotlib
setup(
console=['PlotMemInfo.py'],
options={
'py2exe': {
'packages' : ['matplotlib'],
'dll_excludes': ['libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll']
}
},
data_files = matplotlib.get_py2exe_datafiles()
)
私はpyinstallerが好きです -特に「ウィンドウ化された」バリアント:
pyinstaller --onefile --windowed myscript.py
1つの* .exeファイルがdist /フォルダーに作成されます。
python 2.3-2.7などの下位互換性を高めるために、pyinstallerもお勧めし ます。
以下のためpy2exeは、Python 2.6を持っている必要があります
Python 3.2スクリプトの場合、唯一の選択肢はCxfreezeです。ソースからビルドしないと機能しません。
python 2.xの場合、ライブラリも出力するCxFreezeとは異なり、pythonプログラムを単一の実行可能ファイルにパッケージ化できるため、pyinstallerをお勧めします。
py2exeは必要なexeファイルを作成しますが、新しいexeを使用するマシンには同じバージョンのMSVCR90.dllが必要です。詳細については、http://www.py2exe.org/index.cgi/Tutorialを参照してください。
@ https://wiki.python.org/moin/DistributionUtilitiesにリストされている配布ユーティリティのリストを見つけることができます。
私はbbfreezeを使用していますが、それは非常にうまく機能しています(まだpython 3をサポートしています)。
.so
ファイルにコンパイルするか、.eggファイルを直接コピーし、それらはすべて単一のディレクトリに(または単一のファイルとして)存在します。インストールは必要ありません。
pyinstallerを使用して、.exeへのショートカットを使用するよりも、.exeへのショートカットを使用するより良い方法を見つけました--onefile
。とにかく、おそらくいくつかのデータファイルがあり、サイトベースのアプリを実行している場合、プログラムはhtml、js、cssファイルにも依存しています。これらすべてのファイルをどこかに移動しても意味がありません。代わりに、作業パスを上に移動するとどうなりますか。
exeファイルへのショートカットを作成し、トップでそれを移動し、目標を設定し、起動中にパス指定として、DIST \フォルダに行くの相対パスを持っている:
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe
Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
「GTFS-マネージャ」に名前を変更するように、何にでもショートカットの名前を変更することができます
今とき、私のダブル-ショートカットをクリックすると、Pythonでファイルを実行したかのようになります。私はこのアプローチが次のものよりも優れていることを発見しました--onefile
:
ああ、ビルド後にビルドフォルダーを削除することを忘れないでください。サイズが節約されます。
PyRun、https: //www.egenix.com/products/python/PyRun/ もオプションであると聞いています。