我尝试在从urlparse
导入six.moves.urllib_parse
的程序中使用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,运行KeyError: 'six.moves'
时出现python setup.py py2exe
错误。
如何阻止这些错误发生?
答案 0 :(得分:1)
问题在于py2exe没有检测到代理到6的模块,所以它们没有被捆绑。
您需要做的就是将有问题的模块(urlparse)添加到setup.py中的包含中:
options={
"py2exe": {
...
"includes": ["urlparse"],
...
这样就可以打包模块,当六个人试图导入它时,它会起作用。
答案 1 :(得分:0)
py2exe最近发布了一个修复此问题的新版本:
Changes in version 0.9.2.2:
- Added support for six, cffi, pycparser, openssl.
使用此版本,我能够创建一个.exe并成功运行它。