![](/img/trans.png)
[英]ImportError: cannot import name 'ensure_str' from 'six' (/usr/lib/python3.8/site-packages/six.py)
[英]py2exe cannot import from six.py
我正在尝试在从six.moves.urllib_parse
导入urlparse
的程序上使用py2exe。 这是程序:
# hello.py
from six.moves.urllib_parse import urlparse
print('hello world')
这是我的setup.py:
from distutils.core import setup
import py2exe
setup(console=['hello.py'])
运行hello.py可以正常工作。 当我使用python setup.py py2exe
hello.py编译为exe时,将生成hello.exe
文件。 但是,当我运行hello.exe
时,出现错误消息:
ImportError: No module named urlparse
我正在使用Python 2.7。
使用Python 3.4,运行python setup.py py2exe
时出现错误KeyError: 'six.moves'
。
如何阻止这些错误的发生?
问题是py2exe不会检测到通过六个代理的模块,因此它们没有捆绑在一起。
您所要做的就是将相关模块(urlparse)添加到setup.py中的include中:
options={
"py2exe": {
...
"includes": ["urlparse"],
...
这样,该模块将被打包,当六个尝试导入它时,它将起作用。
py2exe最近发布了一个新版本,该版本修复了此问题:
Changes in version 0.9.2.2:
- Added support for six, cffi, pycparser, openssl.
使用此版本,我可以创建一个.exe并成功运行它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.