Сборка исполняемого файла консоли с использованием py2exe, получение ошибки импорта suds - PullRequest
3 голосов
/ 13 сентября 2011

Попытка создать .exe с использованием py2exe: 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.client, suds.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__

Кто-нибудь успешно собрал исполняемый файл с py2exe из сценария с использованием пакетов suds?

ОС: Windows 7 32-bit, Python: 2.7, suds: 0.4, py2exe0,6,9

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

Проблема не в py2exe, я сузил его до вызова imp.find_module в строке 498 в py2exe / mf.py. Модуль suds импортирует ОК, и я вижу его в sys.path, но

import imp
imp.find_module('suds', sys.path)

сообщает, что модуль не найден.

Открытие дополнительного вопроса, специфичного для модуля imp.

0 голосов
/ 13 сентября 2011

Как правило, импорт необходимых библиотек внутри сценария установки помогает решить подобные проблемы.После строки import py2exe попробуйте import suds.

...