py2exe无法从six.py导入

时间:2014-10-20 11:36:36

标签: python py2exe six-python

我尝试在从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错误。

如何阻止这些错误发生?

2 个答案:

答案 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并成功运行它。