我成功创建了应用程序的可执行版本。它只是一个基本的数据库相关应用程序。因此它在同一目录中有一个名为“data”的数据库和一个图标文件。 当我尝试使用.exe文件向数据库添加条目时,会出现“无法打开数据库文件”等错误。但是同一目录中的图标文件没有问题。
有人可以帮助我吗?
感谢。
这是我的setup.py:
from distutils.core import setup
import py2exe
from glob import glob
data_files = [("Microsoft.VC90.CRT", glob(r'c:\dev\ms-vc-runtime\*.*')),("data", glob('Veriler\*'))]
options = {
'py2exe': {
'dll_excludes': [
'MSVCP90.dll'
]
}
}
setup(windows=[{"script": "Nokta Ekleme.pyw","icon_resources":[(1,"Veriler\Alarko.ico")]}], options=options, data_files=data_files)
好的伙计们。我找到了解决方案。数据文件的目标和源目录必须具有相同的名称。所以我将“Veriler”改为“data”。现在一切都好。
答案 0 :(得分:0)
你的globs是否会返回你期望的文件?试试print glob('Veriler\*')
。您可能需要提供完整的目录路径。
另一种选择是使用数据库所需的dll已被遗漏。
我会推荐pyInstaller而不是py2exe一周中的任何一天 - 你可能会发现切换到那里有很好的里程,因为它处理抓取必要的文件,包括可能是你的问题的dll,远胜于py2exe。
答案 1 :(得分:0)
我的手机正在返回我期望的文件。在.exe创建之后,它们已经成功地从“Veriler”复制到“data”目录。
在我的数据库中添加条目的部分:
con = lite.connect('data\noktalar.sdb')
cur = con.cursor()
ad = self.tc1.GetValue()
cihaz = self.tc2.GetValue()
tip = self.nokta_tipleri[self.CB1.GetCurrentSelection()]
miktar = self.sp.GetValue()
cur.execute('insert into noktalar values(null, ?, ?, ?, ?)', (ad, cihaz, tip, miktar))
con.commit()
cur.close()
con.close()