Создание exe с использованием py2exe + sqlalchemy + mssql - PullRequest
3 голосов
/ 15 марта 2011

У меня проблема с созданием exe с использованием py2exe. В моем проекте я использую sqlalchemy с модулем mssql. Мой скрипт setup.py выглядит так:

from distutils.core import setup
import py2exe


setup(
  windows=[{"script" : "pyrmsutil.py"}],
  options={"pyrmsutil" : {
    "includes": ["sqlalchemy.dialects.mssql", "sqlalchemy"],
    "packages": ["sqlalchemy.databases.mssql", "sqlalchemy.cresultproxy"]
}})

Но когда я начинаю процедуру, например: python.exe setup.py py2exe

Я получаю журнал сборки со следующими ошибками: Следующие модули отсутствуют ['_scproxy', 'pkg_resources', 'sqlalchemy.cprocessors', 'sqlalchemy.cresultproxy']

И в папке "dist" я вижу мой файл pyrmsutil.exe, но когда я его запускаю, ничего не происходит. Я имею в виду, что исполняемый файл запускается, но ничего не делает и сразу же завершается без pyrmsutil.exe.log. Это очень странно.

Кто-нибудь может мне помочь с этой ошибкой?

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Я знаю, что ответа как такового нет, но вы пробовали pyInstaller? Раньше я использовал py2exe и нашел, что сложно получить что-то действительно распространяемое. pyInstaller требует немного больше настроек, но документы хороши, и результат кажется лучше.

Для решения этой проблемы вы можете попробовать найти упомянутые dll и поместить их в папку с exe-файлом или где вы его создаете.

0 голосов
/ 15 марта 2011

Похоже, py2exe не может найти расширения sqlalchemy c.

Почему бы просто не включить яйцо в дистрибутив, поместить sqlachemy в исключение py2exe и загрузить яйцо при запуске?

Я использую это в сценарии запуска:

import sys
import path
import pkg_resources

APP_HOME = path.path(sys.executable).parent
SUPPORT = APP_HOME / 'support'

eggs = [egg for egg in SUPPORT.files('*.egg')]
reqs, errs = pkg_resources.working_set.find_plugins(
    pkg_resources.Environment(eggs)
)
map(pkg_resources.working_set.add, reqs)

sys.path.extend(SUPPORT.files('*.egg'))

Я использую модуль пути Джейсона Орендорфа (http://pypi.python.org/pypi/path.py), но вы можете легко стереть его, если хотите.

...