pyinstaller打包akshare项目无法运行
问题描述:
windows 下打包后出现找不到 mini_racer.dll
ubuntu 下打包后出现找不到 libmini_racer.glibc.so
(无论是 -F 还是 -D 打包都会有这种情况)
windows 下-F
报错:
RuntimeBrror: Native library not available at C:\Users\DZQ-836\AppData\Local\Temp\MEI446082\mini_racer.dll
ubuntu 下-F
报错:
RuntimeError: Native library not available at /tmp/_MEII9IIno/libmini_racer.glibc.so
解决方案:
使用--add-data
选项将额外的数据文件添加到生成的可执行文件中。
--add-data
的语法:
--add-data <SRC;DEST or SRC:DEST>
SRC 表示源文件或目录的路径,DEST 表示目标路径,可以是相对路径或绝对路径,用于指定将文件复制到可执行文件中的位置。
-F 解决方案:
1.找到 mini_racer.dll/libmini_racer.glibc.so 的路径
windows下 \xxx\xxx\site-packages\py_mini_racer\mini_racer.dll
ubuntu下 /xxx/xxx/site-packages/py_mini_racer/libmini_racer.glibc.so
2.找到 calendar.json 的路径
windows/ubuntu下 /xxx/xxx/site-packages/akshare/file_fold/calendar.json
3.使用--add-data
选项添加这两个文件
windows下打包命令(根据自己路径修改):
pyinstaller -F .\main.py --add-data "D:\xxx\xxx\site-packages\py_mini_racer\mini_racer.dll;." --add-data "D:\xxx\xxx\site-packages\akshare\file_fold\calendar.json;akshare\file_fold\"
ubuntu下打包命令(根据自己路径修改):
pyinstaller -F ./main.py --add-data "/xxx/xxx/anaconda3/envs/myenv/lib/python3.10/site-packages/py_mini_racer/libmini_racer.glibc.so:." --add-data "/xxx/xxx/anaconda3/envs/myenv/lib/python3.10/site-packages/akshare/file_fold/calendar.json;akshare/file_fold/"
-D 解决方案:
1.使用-D
打包命令
pyinstaller -F .\main.py
2.找到 mini_racer.dll/libmini_racer.glibc.so 和 calendar.json 的路径(同上)
3.把 mini_racer.dll/libmini_racer.glibc.so 拷贝到打包的执行程序所在目录下
4.在执行程序所在目录下,新建akshare/file_fold/文件夹
5.把 calendar.json 拷贝akshare/file_fold/文件夹下
注意:
windows下`--add-data`使用<SRC;DEST>
ubuntu 下`--add-data`使用<SRC:DEST>
中间分别是;和:
pyinstaller打包akshare项目无法运行
https://www.inktea.eu.org/2023/edf2.html