pyinstaller 打包后运行出现: ModuleNotFoundError: No module named。
使用pyinstaller打包遇到的问题
我已经多次遇到这个问题了,我把解决的方法记录在这里。以备后续自己查找,也希望对别人有所帮助。
我遇到的现象是:在pycharm中直接运行或者debug,程序可以正常运行。在Terminal中使用pyinstaller命令行打包,也成功,但是打包成功后,运行exe文件会提示缺模块。
先说说在pycharm中使用pyinstaller打包的大体思路。方法一:是在Terminal中使用命令行,比如:pyinstaller .\main.py -F -w,当执行这条命令的时候,pycharm它首先会去系统的环境变量里面找Python解释器。如果你在系统的环境变量里面设置了Python解释器,那么就按这个进行打包,如果你没有设置环境变量,可能运行不了,打包会报错什么的(我没有验证这一点,我是设置了环境变量的。)方法二:使用external tool,给你的工程新建一个环境,并且环境中安装Python解释器,然后把pyinstaller添加到external tool中来打包。这种方法,就跟环境变量没有关系了,但是你必须给你的工程安装新的环境,并且在新的环境中安装pyinstaller和Python解释器。以上描述可能有些细节的错误,但是大体思路是这样的。
方法一:在Terminal中使用命令行打包。
思路:首先,你要给你的工程选择一个Python解释器,并且,这个被选择的Python解释器一定是配置到了你的系统环境变量中。然后把你工程中用到的所有模块,全部安装在这个Python解释器下面。然后运行命令,比如:pyinstaller .\main.py -F -w,进行打包。具体步骤:
step1:安装Python解释器,然后把他配置到你的系统环境变量中。

step2:给你的pycharm工程选择那个配置到系统环境变量中的Python解释器,然后在你配置的Python解释器中安装pyinstaller,以及你工程中用到的所有模块。

step3:使用命令行在Terminal中打包,常用的命令比如:pyinstaller .\main.py -F -w。这样大概率就可以打包成功。一定要注意,你合理的做法是,在你的pycharm工程中,选择环境变量中配置的Python解释器作为你工程的Python解释器,然后把工程中所有用的的模块和pyinstaller,安装到这个环境变量配置的Python解释器中。然后再去打包。

我之所以出现这个问题,那是因为我pycharm中的工程新建了环境,并且给这个新的环境选择了另外一个版本的Python解释器,而不是环境变量中的解释器。然后再Terminal中使用命令行打包,但是,此时用的又是环境变量中Python解释器和pyinstaller。然后打包完成后,运行就报错说缺失模块,这是因为我用的那个模块并没有安装到环境变量中那个Python解释器中,而是安装到了新建的环境所选择的那个Python解释器中。你可以通过:pip show pyinstaller,看看命令行使用的是哪个pyinstaller。
方法二:使用external tool来打包。
思路:给你的pycharm工程新建一个环境,给你的环境选择Python解释器,然后,把需要用的模块和pyinstaller都安装到这个Python解释器中。把pyinstaller添加到external tool中,然后,使用external tool中的pyinstaller打包。
step1. 给你的工程新建一个虚拟环境,然后选择Python解释器。
step2. 给你选择的Python解释器,安装pyinstaller和模块。

step3. 添加pyinstaller到external tool中。

step4.使用external tool中pyinstaller打包。



其他问题:
最后再说个有时候遇到的问题,使用pyinstaller打包,Terminal中输入打包命令后,几行命令就结束了,似乎没有进行打包的动作,中途被卡住了。 这个一般是:工程没有任何的修改,他不打包,这个时候,把已经打包好的那个exe文件删除或者修改源代码,就会执行打包过程。或者已经有一个同名的exe文件正在运行,它打包也不执行。这个时候关闭那个运行的exe文件,再执行打包命令,应该就会执行打包过程了。
更多推荐




所有评论(0)