python打包exe文件-ImportError: No module named 'queue'

Python提供多种方法把程序打包成在windows平台上直接运行的exe文件,比如py2exe,cx_Freeze,pyinstaller等。

我采用的是pyinstaller的方法:

1、用pip安装pyinstaller程序,pip install pyinstaller

2、查看pyinstaller是否安装成功,pyinstaller -h,部分显示结果如下

usage: pyinstaller-script.py [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
                             [--add-data <SRC;DEST or SRC:DEST>]
                             [--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]
                             [--hidden-import MODULENAME]
                             [--additional-hooks-dir HOOKSPATH]
                             [--runtime-hook RUNTIME_HOOKS]
                             [--exclude-module EXCLUDES] [--key KEY] [-d] [-s]
                             [--noupx] [-c] [-w]
                             [-i <FILE.ico or FILE.exe,ID or FILE.icns>]
                             [--version-file FILE] [-m <FILE or XML>]
                             [-r RESOURCE] [--uac-admin] [--uac-uiaccess]
                             [--win-private-assemblies]
                             [--win-no-prefer-redirects]
                             [--osx-bundle-identifier BUNDLE_IDENTIFIER]
                             [--distpath DIR] [--workpath WORKPATH] [-y]
                             [--upx-dir UPX_DIR] [-a] [--clean]
                             [--log-level LEVEL] [--upx UPX]
                             scriptname [scriptname ...]

positional arguments:
  scriptname            name of scriptfiles to be processed or exactly one
                        .spec-file

optional arguments:

3、打包python程序文件,pyinstaller -F /path/to/python_program.py

pyinstaller参数比较多,常见的比如-w ,作用是在运行打包后的exe文件时不会弹出dos窗口;--hidden-import MODULENAME,在打包过程中会屏蔽指定模块。


4、常见问题定位:

在打包完成后,有时候会出现窗口一闪而过,程序似乎并没有正常运行。这时候,我们可以在程序所在目录下打开cmd窗口,直接执行打包后的程序,运行结果就会显示在屏幕上,包括错误信息,而不会一闪而过。这时就可以根据具体错误来定位、解决问题。

我之前遇到的一个错误就是

  File "site-packages\urllib3\packages\six.py", line 92, in __get__
  File "site-packages\urllib3\packages\six.py", line 115, in _resolve
  File "site-packages\urllib3\packages\six.py", line 82, in _import_module
ImportError: No module named 'queue'
Failed to execute script final_exam2
然后自己手工导入queue模块,并没有报错。

在尝试重新打包并且使用--hidden-import queue 后,程序能够正常运行。

pyinstaller -F --hidden-import=queue final_exam2.py

具体原理暂时还不太清楚,先记录再此,后续有机会再好好研究pyinstaller的执行过程。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值