我正在尝试创建一个文件.exe,以便在任何windows机器上运行,但我遇到了pysqlcipher的问题。我回到了一些基本的代码,这些代码只是用键创建一个简单的数据库,在我的dev机器上,无论我使用python文件还是编译的exe,都可以正常工作。我好像错过了图书馆,小路,还是两者兼而有之?我试过使用-添加数据-添加一些恶意的项目,但花费了几个小时,但没有取得任何进展。这里是python的基本部分:-
from pysqlcipher3 import dbapi2 as sqlite
import os
import sys
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
conn = sqlite.connect('test.db')
c = conn.cursor()
c.execute("PRAGMA key='password'")
c.execute('''create table stocks (date text, trans text, symbol text, qty real, price real)''')
c.execute("""insert into stocks values ('2006-01-05','BUY','RHAT',100,35.14)""")
conn.commit()
c.close()当我在不同的windows 10 PC上运行exe时,我会得到以下错误
追溯(最近一次调用):文件"testdb.py",第1行,文件"site-packages\pysqlcipher3-1.0.3-py3.8-win-amd64.egg\pysqlcipher3\dbapi2.py",第623行,exec_module文件“site-packages\pysqlcipher3-1.0.3-py3.8-win-amd64.egg\pysqlcipher3\dbapi2.py”,行第33行,ModuleNotFoundError:没有一个名为'pysqlcipher3._sqlite3‘9248的模块执行脚本testdb失败
错误引用了我的dev PC上的路径,还引用了dbapi2.py中的第33行,即:-
from pysqlcipher3._sqlite3 import *
在运行pyinstaller时,我尝试过添加各种文件,但是我没有取得任何进展,我相信这并不简单,只是需要帮助。
发布于 2021-10-14 16:17:38
不久前,我遇到了一个类似的问题,对我起作用的一件事是在pyinstaller的规范文件中添加sqlite3 dll。还可以从命令行添加它。我以前尝试过很多其他的东西,比如重新创建conda环境和重建我的python包,但是这没有起作用。在您添加pyinstaller二进制文件的规范文件中,请尝试如下所示。
binaries=[('C:\\Users\\myname\\newfolder\\sqlite3.dll','.')]
您可以根据windows或linux平台从https://www.sqlite.org/download.html下载DLL。一旦您添加了dll并重新编译它,就可以了。我认为此错误主要发生在dbapi2请求sqlite3 dll时,在我的示例中,该DLL文件夹中缺少该链接库。我刚刚下载并将其添加到规范文件中,但您也可以尝试将其添加到挂钩路径或ENV文件夹中。
https://stackoverflow.com/questions/61658608
复制相似问题