Py2Exe, Sqlite - 不是有效的 Win 32 应用程序

0 投票
1 回答
866 浏览
提问于 2025-04-18 08:28

我有一个用Python写的程序,想用Py2Exe来打包。我的Python版本是3.4。这个程序使用Sqlalchemy和Sqlite3来创建和访问数据库。

当我安装Py2Exe生成的文件时,出现了一个dll错误:

Sqlite不是一个有效的Win32应用程序

我尝试过这里列出的各种解决办法,包括卸载Python,然后重新安装所有模块,以确保我只有32位的版本。有没有什么好的建议?

我的setup.py代码如下。它使用了一些针对sqlite的解决办法,还有一些针对sqlalchemy的。

from distutils.core import setup
import py2exe

setup(console = ['notetest.py'], 
    options = {'py2exe' : {'packages' : [
    'reportlab',
    'reportlab.graphics.charts',
    'reportlab.graphics.samples',
    'reportlab.graphics.widgets',
    'reportlab.graphics.barcode',
    'reportlab.graphics',
    'reportlab.lib',
    'reportlab.pdfbase',
    'reportlab.pdfgen',
    'reportlab.platypus',
    'sqlalchemy.dialects.sqlite',
    #'sqlalchemy.databases.sqlite',
    'sqlite3'
    ]}} )

1 个回答

1

好的,我不确定这是不是一个真正“有效”的解决办法,但它确实有效,而且相当简单。

我从 Sqlite 下载了最新的 Sqlite dll 文件。我只是把 Py2Exe 生成的 Sqlite dll 替换成这个更新的文件,结果程序运行得非常顺利。

我还在使用 InnoSetup 来编译 MSI 安装程序,所以你可以简单地把这个“更新的” dll 文件复制到预编译的目录里,这样就能包含在 MSI 安装程序中了。

这个方法对我有效,希望对其他人也有帮助。

撰写回答