我有一個程序,目前依賴於numpy
,我一直在努力轉換py2exe
。我的問題是,即使腳本如減少py2exe分佈大小,同時包括一些numpy功能
from numpy import array
print array(1)
,只有使用功能numpy.array
,我找不到任何方式排除,如在分配numpy.linalg
由創建numpy
包看似不必要的部分py2exe
。這導致分配大小超過80MB(壓縮後爲30MB)。在名爲numpy.linalg._umath_linalg.pyd
的文件夾中有一個文件,它是34MB,另一個文件是numpy.linalg.lapack_lite.pyd
,它是18MB - 這些文件真的需要在那裏嗎?! .exe
僅在被刪除時纔會運行。
我的問題是,我該如何減少由此產生的分佈大小?我知道有py2exe
替代方案,如果我可以刪除依賴numpy
我不會有這個問題,但我想堅持這兩個。
以下安裝腳本是我正在使用的,導致87MB分發。
from distutils.core import setup
import py2exe, sys
import shutil
sys.argv.append('py2exe') # No need to type in command line.
py2exe_options = {
# 'excludes': ['numpy.linalg'], # Stopped the resulting exe from running
'compressed': True, # Saves 5MB, is this at the cost of some speed?
'optimize': 1 # I don't really understand what this does.
}
setup(
windows=[{'script': 'main.pyw'}],
options={'py2exe': py2exe_options},
)
shutil.rmtree('build', ignore_errors=True) # Remove the build folder
相關:http://forums.xkcd.com/viewtopic.php?f=11&t=57929 – Siwel
呵呵奇怪。我係統上的這兩個'.pyd'文件只有68和26 KB。你是如何安裝Numpy的? –
文件大小取決於文件是否包含英特爾MKL/OpenBLAS/Atlas靜態鏈接英寸等內容。如果您不需要快速線性代數,可以通過編譯Numpy而不使用MKL/OpenBLAS/Atlas來縮小文件大小。 –