pyinstaller no module named “”

环境:window7 64位,pyinstaller 3.3.1 ,python2.7.14

在pip install pyinstaller之后想把文件打包成exe文件,但是出现下面的错误,说 no module named message,下面就开始各种百度,各种找,下面一一列举所尝试的工作。

首先大家进到python安装目录,打开到下面图片的目录,会看到有一个message.py的文件,所以尝试方法(1),但是还是报错:

实际上,报错所说的no module named message并不是上面图中的那个message.py文件,而是下图mime子文件夹里面的message.py文件,知道这个以后,估计问题就很好解决了。


注:路径一定不要包含中文,切记切记;另外一定要以管理员身份打开cmd或者powershell窗口,不然可能会出现ascii编码问题。

先在cmd窗口进入到py文件目录下,

(1)说缺包,那咱们就补上,于是就输入  pyinstaller -F httpRoute.py --hidden-import message--clean 导入隐藏的包,运行之后结果还是如上图所示。

(2)在stackoverflow上找到一个大神的提问,照着输入pyinstaller --name=httpRoute --windowed "F:\project_cx\wanggong\httpRoute.py" -y --hiddenimport email.mime.message --clean  --onedir  结果运行之后还是报错,这就奇怪了明明是同样的问题,怎么我试就不行了呢,直到后面我才发现他后面跟了一个 --onedir,这个参数的意思就是将生成的exe文件放到现在cmd所处的目录环境下,因为我的路径包含中文所以才报错的,注意尽量少用中文,免得出现麻烦。

(3)经过多次尝试,在cmd窗口,将路径切换到py文件目录后,输入pyinstaller -F httpRoute.py --hidden-import email.mime.message --clean,运行完成以后,双击exe文件还是报错,但是这一次不是 no module named message的错误了,是报no module named image错误,一看到这个错误我简直欣喜若狂,看来这个问题有眉目了呀;然后继续导入隐藏包,输入pyinstaller -F httpRoute.py --hidden-import email.mime.message --hidden-import email.mime.image  --clean ,又没成功说又缺包,然后继续导,陆陆续续下来,在输入pyinstaller -F httpRoute.py --hidden-import email.mime.message --hidden-import email.mime.image --hidden-import email.mime.text --hidden-import email.mime.multipart --hidden-import email.mime.audio --hidden-import email.mime.base --hidden-import email.mime.application --hidden-import email.mime.nonmultipart --clean之后,终于成功了。真的是开心。

(4)因为已经测试成功,并且不需要弹出cmd窗口,所以加个参数-w,pyinstaller -F -w httpRoute.py --hidden-import email.mime.message --hidden-import email.mime.image --hidden-import email.mime.text --hidden-import email.mime.multipart --hidden-import email.mime.audio --hidden-import email.mime.base --hidden-import email.mime.application --hidden-import email.mime.nonmultipart --clean生成exe文件以后,发给过别人,并且测试成功。

小结:这个问题一直困扰了我一整天,期间我是看各种文档说导这个那个库,降pyinstaller版本,但是最后还是没能解决,看到stackoverflow那个文档以后还弄了一下午,弄这么长时间的原因就是一个是包含中文,不知道中文路径竟然还会报错,另外一个原因是对于导入库的理解还不是很深,没能理解 import email.mime.message是什么意思,反而觉得这个东西很奇怪。实际上我们在写py程序的时候经常会import pandas等等,然后使用pandas里面的库,使用 pandas.DataFrame等,也都用过,不过一直在用并没有理解其内在的含义,所以才会造成这种情况。

后面觉得上面的有点长,尝试了以下几种,不过都没有成功:

(1)使用pyinstaller -F httpRoute.py --hidden-import email.mime --clean,尝试导入email.mime里面的所有库(包含message),但是报错。

(2)pyinstaller -F -p D:\python\Lib\email\mime F:\project_cx\wanggong\httpRoute.py --clean 这个语句也是一样想整个导入,但是报错。

-p参数是导入包的目录

建议:在将文件打包成exe文件时,没有用到的模块尽量删除掉,不然会导致exe文件很大。




  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值