使用py2exe构建控制台可执行文件时,遇到suds导入错误

3
尝试使用py2exe构建.exe文件:python setup.py py2exe,出现错误:
ImportError: No module named suds

我做了一些研究,发现模块必须在setup.py中特别包含。以下是我的setup.py文件:

from distutils.core import setup
import py2exe

setup(console = [{'script':'report.py'}],
        options = {
            'py2exe': {
                'bundle_files' : 1,
                'includes' : ['suds']
            }
        })

我尝试包含了suds.clientsuds.transport.https这些包名,但错误仍然存在。py2exe似乎有几个模块特定的要求,可以在这里找到,但我没有看到任何关于suds的具体文档。
这里找到了一些关于py2exe如何查找必要模块的信息。
C:\Python27>python -m py2exe.mf -d /path/to/report.py
path:
    ''
    'C:\\Python27\\lib\\site-packages\\pyyaml-3.10-py2.7-win32.egg'
    'C:\\Python27\\lib\\site-packages\\progressbar-2.3-py2.7.egg'
    'C:\\Python27\\lib\\site-packages\\sqlalchemy-0.7.2-py2.7-win32.egg'
    'C:\\Python27\\lib\\site-packages\\soappy-0.12.5-py2.7.egg'
    'C:\\Python27\\lib\\site-packages\\wstools-0.3-py2.7.egg'
    'C:\\Python27\\lib\\site-packages\\fpconst-0.7.2-py2.7.egg'
    'C:\\Python27\\lib\\site-packages\\python_ntlm-1.0.1-py2.7.egg'
    'C:\\Python27\\lib\\site-packages\\django-1.3-py2.7.egg'
    'C:\\Python27\\lib\\site-packages\\pyodbc-2.1.9-py2.7-win32.egg'
    'C:\\Python27\\lib\\site-packages\\suds-0.4-py2.7.egg'
    'C:\\Windows\\system32\\python27.zip'
    'C:\\Python27\\DLLs'
    'C:\\Python27\\lib'
    'C:\\Python27\\lib\\plat-win'
    'C:\\Python27\\lib\\lib-tk'
    'C:\\Python27'
    'C:\\Python27\\lib\\site-packages'
run_script 'report.py'
    load_module '__main__' 'fp' 'report.py'
        load_module 'binascii' None None
    load_module -> Module('binascii')
    ImportError: 'No module named suds'
    ImportError: 'No module named suds'
load_module -> Module('__main__', 'report.py')

  Name                      File
  ----                      ----
m __main__                  report.py
m binascii

Missing modules:
? suds.client imported from __main__
? suds.transport.https imported from __main__

有人成功地使用suds包从脚本构建了一个可执行文件吗?

操作系统:Windows 7 32位,Python版本:2.7,suds版本:0.4,py2exe版本:0.6.9

2个回答

2
问题不在于py2exe,我已经缩小到了py2exe/mf.py中第498行的imp.find_module调用。 suds模块可以成功导入,并且我可以在sys.path中看到它,但是......
import imp
imp.find_module('suds', sys.path)

报告未找到模块。

打开一个与imp模块相关的后续问题。


将链接添加到您的后续问题中:no-module-named-suds - jfhfhf839

0
通常,在设置脚本中导入所需的库可以帮助解决这些问题。在 import py2exe 行之后,尝试添加 import suds

之前在故障排除时尝试过这个方法,但结果相同。在setup.py示例中省略了它,因为根据文档(http://www.py2exe.org/index.cgi/ListOfOptions),includes选项应该负责模块导入。我正在查看py2exe/mf.py以找出模块是如何被发现和加载的。 - Bryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接