ImportError в скомпилированном exe, но не в скрипте

Я написал небольшой скрипт на Python, который взаимодействует с базой данных. Я хотел создать exe-файл файла сценария, а затем отправить его конечному пользователю вместо отправки самого файла сценария. Я использую pytoexe для создания exe-файла.

Вот как сейчас выглядит мой файл setup.py

from distutils.core import setup
import py2exe
setup(
    console=["Test.py"],
    zipfile = None,
    data_files=[("",
                 ["config.xml"]),
                ],
    name='Test',
    version='1.0.0',
    url='',
    license='',
    author='test user',
    author_email='',
    description='',
    #package_dir = {'': 'Lib'},
    py_modules =['pyodbc']
    #packages = ['pyodbc']
)

Я запускаю скрипт, используя следующую командную строку

python setup.py py2exe --bundle 2

При создании exe py2exe отображает это сообщение

Следующие модули отсутствуют ['ElementC14N', 'pyodbc']

Однако exe генерируется. Теперь, когда я запускаю этот exe, я получаю это сообщение

Traceback (последний последний вызов): файл «Test.py», строка 4, в ImportError: нет модуля с именем pyodbc

Скрипт, который у меня есть, работает нормально, если я выполняю скрипт. Единственное, что когда я создаю exe, exe не работает и выдает мне это сообщение.

Любая помощь будет оценена по достоинству.

Примечание. У меня есть следующий импорт в файле сценария.

  1. импортировать xml.etree.ElementTree как ET
  2. импортировать pyodbc

Другая ошибка ["ElementC14N"], которая присутствует при создании py2exe, - это exe, я полагаю, что это связано с файлом xml, из которого я читаю настройки. любая помощь в решении этой проблемы также заслуживает похвалы.

Спасибо


person Gagan    schedule 21.11.2012    source источник
comment
Я читал несколько вещей, в которых говорится, что вам нужен аргумент options = { "py2exe": { "includes": "decimal, datetime" } } setup, чтобы заставить pyodbc работать.   -  person martineau    schedule 21.11.2012
comment
Не могли бы вы переслать мне эту ссылку?   -  person Gagan    schedule 21.11.2012
comment
Просто погуглите "py2exe" "pyodbc".   -  person martineau    schedule 21.11.2012
comment
но это верно только в том случае, если я получаю исключение RuntimeError: Unable to import decimal .. но я не получаю это исключение .. py2exe.org/index.cgi/PyODBC   -  person Gagan    schedule 21.11.2012


Ответы (1)


Спасибо вам всем ....

это то, что я сделал, и это начало работать для меня

options = {"py2exe":{"packages":"encodings",
                     "includes":["pyodbc",
                                 "datetime", "decimal"],
                     "bundle_files":2,
                     "optimize":2},},
person Gagan    schedule 21.11.2012
comment
К сожалению, у меня это не работает :( Не могли бы вы привести полный сценарий setup.py в качестве примера? Мой setup.py выглядит так: pastebin.com/b8M81Si5 Ошибка выглядит следующим образом: pastebin.com/YLFixUzC TIA - person texens; 06.02.2013
comment
Что вы сделали, чтобы побороть недостающий модуль ElementC14N? - person Michael David Watson; 04.03.2013
comment
@MichaelDavidWatson: я все еще наивен в python, но я думаю, что это обычно означает, что библиотека, которую вы пытаетесь использовать, не имеет правильной ссылки. - person Gagan; 06.03.2013