dyl*_*fan 7 python pyinstaller python-3.x pandas
我尝试使用PyInstaller 3.2.1创建一个exe文件,出于测试目的,我试图为下面的代码创建一个exe:
import pandas as pd
print('hello world')
Run Code Online (Sandbox Code Playgroud)
经过相当长的时间(15分钟+)后,我完成了620文件大小的dist文件夹和构建 - 150 MB.我使用Python 3.5.2 | Anaconda自定义(64位)在Windows上工作.可能值得注意的是,在dist文件夹中,mkl文件负责将近300 MB.我使用'pyinstaller.exe foo.py'运行pyinstaller.我尝试使用--exclude-module来排除某些依赖项,但最终还是使用了大量文件.无论我使用onefile还是onedir都没有任何区别.
我知道exe必须包含一些重要文件,但是接近1 GB是否正常?如有必要,我可以提供警告日志或任何可能有助于解决问题的事情.
PS同时我的同事用相同的样本脚本创建了一个exe,结果不到100 MB,不同的是他没有使用anaconda.这可能是事吗?
任何帮助将不胜感激.
小智 12
PyInstaller从conda包创建大型可执行文件,从pip包创建小可执行文件.从这个简单的python代码:
from pandas import DataFrame as df
print('h')
Run Code Online (Sandbox Code Playgroud)
我通过conda包获得203MB可执行文件,通过pip包获得30MB可执行文件.但康达是纯粹的virtualenv的好替代品.我可以用conda和Jupyter开发,创建一些mycode.py(我可以在myfolder中下载jupyter笔记本作为py文件).但我的最终解决方案是:如果你没有,请安装Miniconda,然后从Windows开始菜单打开Anaconda Prompt;
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
Run Code Online (Sandbox Code Playgroud)
在我创建新环境'exe'的地方,pypiwin32需要pyinstaller但是没有自动安装,hook-pandas.py需要用pandas编译.此外,导入子模块不能帮助我优化可执行文件的大小.所以我不需要这个东西:
from pandas import DataFrame as df
Run Code Online (Sandbox Code Playgroud)
但我可以使用通常的代码:
import pandas as pd
Run Code Online (Sandbox Code Playgroud)
此外,使用路径中的国家字母可能会出现一些错误,因此开发工具的英语用户帐户很好.
这是仍然可以使用conda和避免的一种方法mkl。使用以下备用命令在安装熊猫之前安装numpy:
conda install -c conda-forge numpy
避免在其位置mkl使用OpenBLAS软件包。有关此问题的完整说明,请参见conda / conda-forge / numpy-feedstock github repo。