【发布时间】:2014-06-30 15:42:56
【问题描述】:
在我的第一次尝试中,我与 py2exe 捆绑的 pyQt 应用程序拒绝连接到 sqlite 数据库,尽管它在其 python 版本中工作。
我猜这是没有加载到 .exe 应用程序中的库的问题。我通过将 sqlite DLL 的完整路径包含到 setup.py 文件中并因此将此 DLL 复制到可执行文件夹来解决了这个问题。
现在我想将这个 DLL 包含到 .exe 文件中,以便向我的用户“隐藏”这个 DLL。 你知道怎么做吗?
我当前的 setup.py:
from distutils.core import setup
import py2exe
setup(
windows=[{
"script": 'myscript.py'
}],
options={
'py2exe': {
"dll_excludes": [
"MSVCP90.dll",
"MSWSOCK.dll",
"mswsock.dll",
"powrprof.dll",
],
'includes': [
'sip',
'PyQt4.QtNetwork',
],
'bundle_files': 1,
}
},
data_files = [
'config.ini',
'template.htm',
# This is the File that I wish to be "hidden"
('sqldrivers', ('C:\Python27\Lib\site-packages\PyQt4\plugins\sqldrivers\qsqlite4.dll',)),
zipfile=None,
)
【问题讨论】:
-
所以你想只给用户一个可执行文件(没有依赖关系)?如果您使用的是 python 2.4 - 2.7,请查看 pyinstaller
--onefile。 -
谢谢,我会看看这个。但是请理解 py2exe 已经具有我需要的选项('bundle_files': 1),通常只生成一个没有依赖关系的可执行文件。这里的问题是它自己没有找到对 sqlight 的依赖,所以我必须手动添加它,我不知道如何强制它进入包。