pyinstaller无法打包含requests模块的程序?

环境是python3.5+Win10 源程序像import requests print('hello') 打开打包后的程序无法运行 显示: ImportError: No module named 'queue' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "test.py", line 2, in <module> File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line …
关注者
13
被浏览
1,739

6 个回答

2017.03.01

长久没上,根据有些童鞋的私信补充一下啊:

需要降低的是requests的版本,requests2.10可以,2.11不可以,看官网后续更新是否支持。其他包的问题可能也类似。

--------------------------------------

pyinstaller 3.2版本(当前最新,截止2016.12.30)支持到requests2.10,如果高于这个版本就会出现相关错误。降低版本便可以了。这个坑有点扯,希望更多人看到。

python程序中使用到requests,在开发环境中可以正常运行,但用pyinstaller 打包成单个exe文件后,却无法运行,提示 requests 中的urllib3依赖的一个six.py模块出现运行错误,提示 no module named 'queue' 接着导致提示 no module named 'urllib3'

six.py提示错误在82行

def _import_module(name): """Import module, returning the module after the last dot.""" __import__(name) #82 return sys.modules[name]

看起来像是自动导入模块,查了些资料了解sys.modules 是个字典存储有python启动到现在,已加载的模块

我的程序中没有直接用queue模块的地方,打包后也没有其他途径加载这个模块,导致找不到。开发环境中运行却无错(猜测开发环境启动时自动加载了一些模块,可能是给用户环境准备的,也可能是开发工具自己要使用就先加载了),尝试在自己的程序中加入一句“import queue”,显示导入这个模块(注该模块是标准库中一部分),尽管程序中没有使用到。

再次打包,运行exe文件,成功,问题解决!

转自

lanfeng330的专栏