py2exe [ImportError:没有名为sqlalchemy的模块]

时间:2013-05-22 13:36:09

标签: python sqlalchemy py2exe

我通过'setup.py install'

在win7中安装了sqlalchemy-0.8.1

和“import sqlalchemy”效果很好

但是当我想用py2exe打包我的文件时,会发生错误

ImportError:没有名为sqlalchemy的模块

以下是我的setup.py

的一部分
import os
import glob
from distutils.core import setup
import py2exe

includes = ['encodings', 'encodings.*', 'glob',
            'sqlite3', 'wx.lib.scrolledpanel',
            'wx.richtext', 'wx.lib.mixins.listctrl',
            'wx.lib.sized_controls', 'sqlalchemy']

excludes = ['pyreadline', 'difflib', 'doctest',
            'tarfile', 'pickletools', 'optparse',
            'pickle', 'cookielib', 'urllib',
            'Tkinter', 'email', 'tcl', 'Tkconstants' ]

py2exe_options = {
    'build': {'build_base': 'dist/'},
    'py2exe': {
        'compressed': 1,
        'dll_excludes': ['msvcp90.dll', 'w9xpopen.exe'],
        'optimize': 2,
        'includes': includes,
        'excludes': excludes,
        'dist_dir': 'dist',
        'ascii': False,
        }
    }

3 个答案:

答案 0 :(得分:0)

尝试在sqlalchemy中加入packages

py2exe_options = {
    "packages": ["sqlalchemy.databases.sqlite"]
}

显然我猜你对sqlite感兴趣。

答案 1 :(得分:0)

这通常对我有用。将下一行放入主脚本中,告诉py2exe编译。

import sqlalchemy

即使一般py2exe相当贪婪并且包含的​​内容远远超过需要,但有时它恰恰相反并跳过所需的包,尽管您在includes中列出了它们。手动导入它们通常有效。请在下面添加注释,了解为什么要导入此模块中不需要的软件包。

答案 2 :(得分:0)

这里的问题是SQLAlchemy安装在你系统上的一个蛋中;你需要它解压缩,或教py2exe读取鸡蛋。有关详细信息,请参阅the py2exe wiki page ExeWithEggs

尽管如此,最简单的方法是重新安装SQLAlchemy解压缩:

easy_install --always-unzip sqlalchemy