2014-09-22 14 views
2

我寫了一個代碼,它的尺寸只有2kb,並且使用了numpy和wxpython包。使用numpy和wxpython等軟件包編譯代碼時的尺寸很大

然後我使用Pyinstaller成功編譯它;但是,其可執行文件大小几乎爲300mb。

我認爲可執行文件太大的原因在於Pyinstaller包含numpy中的所有文件。但實際上我並沒有在numpy中使用所有的函數。 Pyinstaller不夠聰明,只能包含那些我用過的文件,但也包括那些我沒有用過的文件。

有什麼辦法讓我縮小可執行文件的大小嗎?

+0

建造它不知道爲什麼pyinstaller將包括much.I使用wxPython的,matplotlib,numpy的和一些其他的東西像SQLAlchemy的,火鳥SQL,XML阿馬拉和其他一些東西,並獲得約35 MB的分發文件夾,但我使用py2exe。 – Werner 2014-09-22 09:51:07

+0

py2exe的最近更新似乎很久以前。它似乎不支持numpy,因爲我記得當我用numpy編譯代碼時遇到了很多錯誤。 – 2014-09-23 08:02:06

+0

py2exe由Thomas Heller維護,最近他發佈了一個與Python 3兼容的版本。我在numpy的setup.py中沒有特殊的代碼,但也許這是因爲我只對matplotlib做了限制。 – Werner 2014-09-23 12:31:12

回答

2

我在使用Anaconda的Windows 10上遇到了同樣的問題。我簡單的Numpy + wxPython應用程序導致PyInstaller發佈了700MB的分發版。

臃腫的原因似乎是我的Numpy版本使用的英特爾數學內核庫(MKL)。 dist輸出目錄包含許多非常大的mkl- *文件。

由於我的應用程序不需要性能優化的數學庫,我可以通過使用不帶MKL的Numpy版本將我的PyInstaller輸出縮小到102MB(從700MB)。

這裏就是我所做的:

  1. 安裝Python從python.org
  2. 安裝了PIP所需的軟件包,其中包括一個版本numpy的,不使用Intel MKL的。

    python -mpip install numpy 
    python -mpip install setuptools 
    python -mpip install python-dateutil 
    python -mpip install pytz 
    python -mpip install pyparsing 
    python -mpip install cycler 
    python -mpip install matplotlib 
    python -mpip install wxpython 
    python -mpip install pandas 
    python -mpip install pyinstaller 
    python -mpip install pywin32-ctypes 
    
  3. python -mPyInstaller app.py