2017-05-10 13 views
2

500メガバイトの上に作成されます15分+)私は、distフォルダを620 MBとし、ビルドを150 MBとしました。私はPython 3.5.2 | Anacondaカスタム(64ビット)を使用してWindows上で作業しています。 distフォルダのmklファイルには、ほぼ300 MBの責任があることに注意する価値があります。 私はpyinstallerを 'pyinstaller.exe foo.py'を使って実行しています。私はいくつかの依存関係を除外するために--exclude-moduleを使ってみましたが、まだ巨大なファイルに終わってしまいました。 onefileかonedirのどちらを使っても違いはありません。pyInstallerのは、私は次のコードのためのexeファイルを作ってみました、テスト目的のために、私はpyInstallerの3.2.1使用してexeファイルを作成しようとexeファイル

私は、exeにいくつかの重要なファイルが含まれている必要があることを知っていますが、ほぼ1 GB程度の大きさであれば正常ですか?必要に応じて警告ログを提供したり、問題を解決するのに役立つ何かを提供することができます。

P.S.私の同僚は同じサンプルスクリプトからexeファイルを作成して100 MB未満で終了しましたが、違いはアナコンダを使用していないことです。それが問題だろうか?

ご協力いただければ幸いです。

答えて

5

これはおそらく、numpyのAnacondaバージョンがmklを使用して構築されているためです。

あなたは配布のサイズを小さくしたい場合は、pipによってインストールされたパッケージで別々の建物virtual environmentで仕事ができるファイルはとても大きく成長した理由の代わりに、conda

+0

私はvirtualenvについて考えていましたが、あなたはvirtualenvを使っている間にexeを構築する経験がありましたか? –

+0

私はビルドしていたことがありましたが、以前は自分で実行していましたが、簡単に動作させることができず、非パイソン同僚と共有したものを共有することが急務となりました。しかし、私は時間の他の優先順位のためにあまりにも多くの努力を入れていない –

+0

それは、残念ながら私はスクリプトを共有する必要があり、各ユーザーのためのPython環境をインストールすることはできません。一口 私はおそらくvirtualenvのショットを与えるでしょう –

0

理由は、私が会社のに取り組んでいたということでした共有ドライブ(会社ポリシー)。作業ディレクトリをローカルドライブに移動した後に問題が消えました。私もvirtualenvを使い始めましたが、スクリプトで使われていない依存関係を除外していました。本当に小さくて簡単に.exeファイルを共有することができました。

2

PyInstallerは、condパッケージからの大きな実行ファイルとpipパッケージからの小さな実行ファイルを作成します。この単純なPythonコードから:

from pandas import DataFrame as df 
print('h') 

私はPIPパッケージによってcondaパッケージと30メガバイトの実行により、203メガバイトの実行可能ファイルを取得します。しかし、condaは純粋なvirtualenvの素晴らしい代替品です。私はcondaとJupyterで開発することができ、mycode.pyをいくつか作成することができます(myfolderにpy-fileとしてjupyterノートをダウンロードできます)。しかし、私の最終的な解決策は次にあります: もしあなたがそれを持っていなければ、Minicondaをインストールし、WindowsのスタートメニューからAnacondaプロンプトを開きます。

私は新しい環境「EXE」を作成
cd myfolder 
    conda create -n exe python=3 
    activate exe 
    pip install pandas pyinstaller pypiwin32 
    echo hiddenimports = ['pandas._libs.tslibs.timedeltas'] > %CONDA_PREFIX%\Lib\site-packages\PyInstaller\hooks\hook-pandas.py 
    pyinstaller -F mycode.py 

、pyInstallerのためpypiwin32必要はなく、automaticalyパンダとコンパイルのためのhook-pandas.py必要がインストールされていません。 また、インポートサブモジュールは、実行可能ファイルのサイズを最適化するのに役立ちません。 だから私はこの事を必要としない:

from pandas import DataFrame as df 

が、私はいつものコードを使用することができます。

import pandas as pd 

はまた、いくつかのエラーは、パスの国家の文字を使用して一緒に可能であり、それはいいです開発ツールの英語ユーザーアカウント。

関連する問題