问题:
当我使用-F模式时,出现No such file or directory: xxxxx\Temp\_MEIxxxxx\pyecharts\templates\js\echarts\register.json的错误
打包命令如下:
pyinstaller -F D:\stream\ui_monitoring_diagnosis\main.py --hidden-import telnetlib --hidden-import sip --hidden-import paramiko --hidden-import PyQt4.QtNetwork
解决方法一:
pyinstaller没有把pyecharts的一些数据模版文件拷贝过来导致错误,拷贝过来即可,如下图那个目录,不过这个修改只适用于-D参数打包的情形,-F整体打包就不行了
打包命令如下:
pyinstaller -D D:\stream\ui_monitoring_diagnosis\main.py --hidden-import telnetlib --hidden-import sip --hidden-import paramiko --hidden-import PyQt4.QtNetwork
最终放到
以上方法缺点:
1、找这个main.exe文件有点麻烦
2、还需要拷贝pyecharts文件夹到指定目录,文件比较多且占空间
解决方法二:
如果使用 pyinstaller 打包,则需要在打包时指定这些外部资源 (比如在命令行中使用 --add-data 参数),将其和源码(及依赖)一起打包到生成的程序中。
用法:pyinstaller x.py --add-data=“源地址;目标地址”。 windows以;分割,linux以:分割
例如:将 config 目录的所有文件打包到目标的 config 文件夹(不存在会自动创建)下
pyinstaller x.py --add-data “.\config\*;.\config”
例:
将原路径(绝对路径或者相对路径都可)setting 目录下的 aaa.json 文件打包到目标的 setting 文件夹下
–add-data “.\setting\aaa.json;.\setting”
通过在命令行中使用 --add-data 命令添加资源文件路径就可以成功打包并运行。
pyinstaller --add-data=“D:\install\Python37\Lib\site-packages\pyecharts;pyecharts” -F D:\stream\ui_monitoring_diagnosis\main.py --hidden-import telnetlib --hidden-import sip --hidden-import paramiko --hidden-import PyQt4.QtNetwork