如何让pyinstaller包含我的数据库?

时间:2016-05-27 12:23:58

标签: python sqlite pyqt4 pyinstaller

我有一个使用sqlite3的PyQt4应用程序。我目前有两个单独的文件:.py文件和.db文件。最初我拿了.py文件并试图创建一个可执行文件,只是使用它可能会以某种方式链接但是当我运行.exe时它会在它获取数据库相关代码时中断。如何让pyinstaller包含数据库呢?

2 个答案:

答案 0 :(得分:1)

您需要使用specfile。看看documentation

pyinstaller会自动创建这些文件。你只需要编辑它。看看文档中的示例。要添加README文件,您只需要将一个元组(源,目标)添加到'数据':

a = Analysis(...
 datas=[ ('src/README.txt', '.') ],
 ...
 )

答案 1 :(得分:0)

This post帮助了我。基本上,您可以使用如下参数运行pyinstaller命令(假设您的脚本为script.py,而数据库为database.db):

pyinstaller -w --add-data "database.db;." script.py

这将首先创建一个.spec文件,该文件将database.db列为要包含在构建中的文件。创建的.spec文件将用于运行构建。

here所述,-w选项可防止在运行将创建的.exe文件时显示控制台。

----或者----

根据the docs,您可以首先仅创建.spec文件,然后对其进行修改以列出应包括的数据文件。 .spec的{​​{1}}文件是使用以下方式创建的:

script.py

然后,在创建的pyi-makespec script.py 文件中,您可以修改.spec字段:

datas

这假定a = Analysis(... datas=[ ('database.db', '.') ], ... ) 在根文件夹中。如果没有,则需要包括路径。 database.db指定您希望数据库文件在构建中的位置(在这种情况下,'.'是根文件夹。要包含更多文件,可以向其中添加更多元组'.' ('...', '...')列表。