web-dev-qa-db-ja.com

cx_Freeze python単一ファイル?

私はしばらくの間cx_Freezeを使用していますが、本当にやりたかったことが1つあります。それは、すべてのファイルを1つの実行可能ファイルに入れて配布できるようにすることです。 30個のファイルでいっぱいのフォルダをすべて同じディレクトリに送信するのは実際にはユーザーフレンドリーではありません。どうすればこれを達成できますか?ありがとう。

25
pajm

これはbbfreezeが行うことではありませんか?

ここのチュートリアル: http://www.blog.pythonlibrary.org/2010/08/19/a-bbfreeze-tutorial-build-a-binary-series/

Python zipimport http://docs.python.org/library/zipimport.html で自分でロールするのは実際にはそれほど難しくありません

Pythonのみ。 http://upx.sourceforge.net/ ではなく、より一般的なソリューションであるUPXのようなものを使用することをお勧めします。

6
Michael Dillon

Cx_freezeではサポートされていません。メーリングリストでそれについての議論がありました。私が思い出したように、著者は他の人(PyInstaller、Py2Exe)がそれを達成するためにいくつかの汚いハックを使用していると述べました。一部のアンチウイルスプログラムは、その動作をウイルスと見なすこともできます。

しばらくPyInstallerを使用していましたが、Python 2.7のサポートのためにcx_freezeに戻りました。 InnoSetup を使用してすべてをパックするので、配布が簡単です。かどうかによって異なります。 Windowsを使用しているかどうか。

13
Fenikso

'build'の代わりに 'bdist_msi'を使用できます。これにより、単一のセットアップアプリケーションを含むディレクトリにdistフォルダが作成されます。

http://cx-freeze.readthedocs.io/en/latest/distutils.html

2
Quazi Rabbi

ドキュメント によると

cx_Freezeは、アプリケーションのすべてのライブラリが1つの実行可能ファイルに埋め込まれている単一ファイルexeの構築をサポートしていません。

ドキュメントには、単一のファイルを取得するためのいくつかのオプションが記載されています。

Windowsでの追加のオプションは、@ QuaziRabbiで説明されているように、bdist_msiコマンドを使用して、アプリケーション用の単一のMicrosoftインストーラーファイル(.msi)を作成することです。このコマンドには、インストーラーをカスタマイズするためのcx_Freeze固有のオプションがいくつか記載されています ここ 。このコマンドは、distutilsパッケージの bdist_msi コマンドをオーバーロードします。このコマンド自体が、インストーラーをカスタマイズするためのいくつかのオプションをもたらします。利用可能なオプションは文書化されていません。distutilsパッケージのソースコードを確認する必要があります。興味深い例は cx-freezeを使用してデスクトップにショートカットを追加するmsiを作成する および cx_freeze bdist_msi:レジストリエントリを作成しますか?

別のオプションは、別のツールを使用して、cx_Freezeビルドステップの後に、フリーズされたアプリケーション用のよりカスタマイズ可能な単一ファイルインストーラーを作成することです。スクリプトベースのツール NSIS(Nullsoft Scriptable Install System) を使用すると、非常にカスタマイズ可能なインストーラーを作成できます。スクリプトを使用すると、この手順を完全に自動化できます。 @Feniskoの回答は別のツールに言及しており、他にもたくさんあります。

0
jpeg