目录
引言
上一节在打包的时候使用的是虚拟环境,且所有终端操作都是在虚拟环境下完成的,而虚拟环境的根目录也与我自定义的模块属于同级文件夹,因此,避免了很多问题(少踩很多坑),然而欠的终究是要还的,今天我新建了一个项目打包的时候出现各种问题,如下:
环境:非虚拟环境 且所有包都已经安装好,pycharm可以打开运行
打包exe: D:\code\09\源程序\imageMS>pyinstaller -F main.py 终端根目录是对的
然后打开main.exe运行出现以下问题: 可是我明明安装了啊
然后我尝试虚拟环境,重新安装各种包,打包---->成功了 无语,肯定是路径不对啊,在非虚拟环境下,偷偷看了以下Extended pathes:
即使我把所有Python的根目录添加进去都无济于事:'C:\\Users\\TCG_MouriKing\\Anaconda3','C:\\Users\\TCG_MouriKing\\Anaconda3\\Lib','C:\\Users\\TCG_MouriKing\\Anaconda3\\Lib\\site-packages'
于是乎,后面打包都用虚拟环境吧....... 于是乎我就继承了一下之前的Python环境
没想到,还是不行.......,
还是老老实实一个包一个包的安装吧,不要勾选Inherit global site-packages
此时在想,之前的环境还有毛用.....这样岂不是很麻烦吗????每次都得重新搞一次环境包,能不能配置一个大的虚拟环境,之后所有项目都在里面搞呢?
大虚拟环境下-修改SPEC文件进行exe文件生成
看一下,我的大虚拟环境包含了许多项目呀
打开里面的09号文件尝试生成一下:(venv) D:\code>pyinstaller -F D:\\code\\09\\源程序\\imageMS\\main.py
自定义模块找不到
嘿嘿,看一下扩展路径
经过前面的摸坑,我们把路径:D:\\code\\09\\源程序\\imageMS 添加到spec文件的pathx参数中 也就是你自己模块所在的文件夹
在尝试利用spec文件生成exe:pyinstaller main.spec
点击exe运行:
哈哈,看到这个问题,我就放心了,主程序可以打开,只是资源文件找不到而已,我们把资源文件按照项目文件夹格式添加进来就行了.
最后不要控制台的话把spec的console参数置为false即可
最后,推荐大家多使用虚拟环境