使用PyInstaller在Windows 10编译含pandas的单文件可执行程序问题
在Windows 10上打包含Pandas的单文件Python程序
我来帮你梳理下完整的操作流程,以及打包这类依赖数据处理库的程序时需要注意的细节:
你的测试脚本
你用来验证打包流程的TrivialTest.py脚本内容如下,它依赖Numpy和Pandas生成带多级索引的DataFrame并导出为CSV文件:
import numpy as np import pandas as pd np.random.seed(456) j = [(a, b) for a in ['A','B','C'] for b in pd.date_range('2018-01-01', periods=5, freq='W')] i = pd.MultiIndex.from_tuples(j, names=['Name','Num']) df = pd.DataFrame(np.random.randn(15), i, columns=['Vals']) df.to_csv('Test.csv')
打包执行步骤
你已经使用了正确的PyInstaller单文件打包命令:
pyinstaller --onefile TrivialTest.py
执行后等待数分钟,PyInstaller会自动扫描并收集所有依赖项(包括Numpy、Pandas及其底层的C扩展依赖),最终在项目目录的dist文件夹下生成一个独立的可执行文件。
打包后实用注意事项
- 首次启动速度慢:单文件打包的exe第一次运行时,会自动将内部打包的所有依赖解压到系统临时目录,所以启动速度会比直接运行Python脚本慢一些,这是正常现象
- 依赖缺失排查:如果运行exe时提示找不到Pandas相关模块,可以尝试添加
--hidden-import参数强制包含容易遗漏的依赖,比如:pyinstaller --onefile --hidden-import pandas._libs.tslibs.timedeltas --hidden-import pandas._libs.tslibs.np_datetime TrivialTest.py - 清理打包缓存:如果多次打包后出现奇怪的运行问题,建议加上
--clean参数清理之前的打包缓存,避免旧文件干扰:pyinstaller --onefile --clean TrivialTest.py
内容的提问来源于stack exchange,提问作者feetwet
相关产品推荐
相关产品推荐

