py2exeについて少し

そのようなアプリケーションがあります。 py2exeと呼ばれます。 pythonプログラムを圧縮してexeファイルに変換できます(正確には、exeと他の多くのファイル)。 なぜそれがすべて必要なのですか? さて、すべてのWindowsユーザーからは、必要なライブラリを備えたPythonインタープリターがあります。 ただし、パッケージ化されたプログラムは、理想的にはすべてのWindowsマシンで実行する必要があります。





設置



残念ながら、py2exeはpythonの3番目のバージョンをサポートしていません。

SourceForgeで py2exeをダウンロードできます。

Pythonをお持ちの場合(おそらくお持ちかもしれません)、インストールに問題はないはずです。 pythonディレクトリに配置します。



変換



今から楽しみが始まります。 Pythonプログラムが置かれているディレクトリで、次の内容のsetup.pyファイルを作成する必要があります

Copy Source | Copy HTML from distutils .core import setup import py2exe setup( windows=[{ "script" : "main.py" }], options={ "py2exe" : { "includes" :[ "sip" ]}} )



  1. Copy Source | Copy HTML from distutils .core import setup import py2exe setup( windows=[{ "script" : "main.py" }], options={ "py2exe" : { "includes" :[ "sip" ]}} )



  2. Copy Source | Copy HTML from distutils .core import setup import py2exe setup( windows=[{ "script" : "main.py" }], options={ "py2exe" : { "includes" :[ "sip" ]}} )



  3. Copy Source | Copy HTML from distutils .core import setup import py2exe setup( windows=[{ "script" : "main.py" }], options={ "py2exe" : { "includes" :[ "sip" ]}} )



  4. Copy Source | Copy HTML from distutils .core import setup import py2exe setup( windows=[{ "script" : "main.py" }], options={ "py2exe" : { "includes" :[ "sip" ]}} )



  5. Copy Source | Copy HTML from distutils .core import setup import py2exe setup( windows=[{ "script" : "main.py" }], options={ "py2exe" : { "includes" :[ "sip" ]}} )



  6. Copy Source | Copy HTML from distutils .core import setup import py2exe setup( windows=[{ "script" : "main.py" }], options={ "py2exe" : { "includes" :[ "sip" ]}} )



main.pyはスクリプトの名前です。



次に、次のコマンドでパッキングを開始します。

setup.py py2exe


はい、正確に。



私たちがやったことを見てください。 2つのフォルダー。

ビルド-サービス、すぐに取り壊すことができます。

dist-実際、それは私たちのプログラムです。



上記のように、これは1つのファイルではありません。



簡単ですか? 真実ではない;)



難しさ



おそらくいくつかの問題があるでしょう。



たとえば、ファイルパス。 相対パスは使用しないでください。 彼らはどこへ行くかわからない。 絶対を使用する方が良い。

彼を認識する方法は? インターネットにはmodule_path関数という解決策があります。

Copy Source | Copy HTML



  1. os、sysのインポート
  2. def module_path ():
  3. hasattr (sys、 "frozen" )の場合:
  4. return os .path.dirname(
  5. unicodesys .executable、 sys .getfilesystemencoding())
  6. return os .path.dirname( unicode (__file__、 sys .getfilesystemencoding()))


または、アプリケーションが完全に起動を拒否します(おそらく、あなたとではなく、誰かと)。 Visual Studioライブラリが不足しているため。

問題の解決策として、コンピューターにインストールするか(これは私たちの方法ではありません)、dllとマニフェストファイルをプログラムフォルダーにドロップします。

msvcr90.dllおよびMicrosoft.VC90.CRT.manifest (これがどのようにライセンスされているかわかりません。投稿しません)

どこで入手できますか? 私にとって、最も簡単な方法は、Pythonを再インストールすることです(他のすべてはそのままでした)。 そして、検索されたファイルはpythonフォルダーになりました。



このトピックの目的は、py2exeのすべての機能を明らかにすることではありませんでした。 ここにチュートリアルがあり、 ここにいくつかのヒントとコツがあります。



大きさ



一部の機能により、アプリケーションのサイズが非常に大きくなることがあります。 しかし、これは戦うことができ、戦わなければなりません。 kAISTが提案されたアイデア(まあ、upx'a = pを除く)



  1. 最も効果的。 upxでライブラリを圧縮します。 コンソールアプリケーション。 基本的に機能します。 ファイルが入力に転送され、圧縮されます。 私のリバーシゲームでは、サイズが約3倍減少しました。
  2. unicodedata.pyd、bz2.pyd、select.pyd、w9xpopen.exeを削除します。 それほど重要ではありませんが、少なくともプロジェクト内のファイルは少なくなります
  3. setup.pyでoptimize:2オプションを指定すると、モジュールは.pyc(pythonコンパイラスクリプト)ではなく.pyo(python最適化コード)でコンパイルされます。 これはあまり効果がありませんが、誰が知っているか、あなたは幸運かもしれません)
  4. 最後に、未使用のモジュールとエンコーディングからlibrary.zipを削除できます。 きれいにだけ。


おわりに



まあ、それがすべてのようです。 私たちは望んでいたことを達成しました。 はい、アプリケーションは固体サイズであることが判明しました(たとえば、これはC ++ではありません)が、最愛のPythonでは:)



All Articles