使用py2exe + sqlalchemy + mssql制作exe

时间:2011-03-15 11:18:33

标签: python sql-server sqlalchemy py2exe

我在使用py2exe制作exe时遇到问题。在我的项目中,我使用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 个答案:

答案 0 :(得分:1)

我知道这本身不是答案,但你试过pyInstaller吗?我以前使用py2exe并发现获得真正可分发的东西很棘手。 pyInstaller需要更多的设置,但文档很好,结果似乎更好。

要解决此问题,您可以尝试搜索上面提到的dll并将它们放在带有exe的文件夹中,或者在构建它的位置。

答案 1 :(得分:0)

看起来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'))

我使用Jason Orendorff的路径模块(http://pypi.python.org/pypi/path.py),但如果需要,可以轻松将其删除。