Problem Creating One File exe with pyinstaller and pysqlcipher(使用pyinstaller和pysqlcipher创建一个文件exe时出现问题)
问题描述
我正在尝试创建一个文件.exe,以便在任何Windows计算机上运行,但我遇到了pysqlcipher的问题。我又回到了一些基本的代码,这些代码只是用一个键创建一个简单的数据库,在我的dev机器上,无论我使用python文件还是编译后的exe,都运行得很好。我似乎错过了一个图书馆、一条小路,还是两者兼而有之?我尝试过使用--add-data添加很多项目,但是花费了几个小时,没有取得任何进展。以下是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,位于 EXEC_"c:usersxxxappdatalocalprogramspythonpython38libsite-packagesPyInstallerloaderpyimod03_importers.py",中的文件第623行 文件"site-packagespysqlcipher3-1.0.3-py3.8-win-amd64.eggpysqlcipher3dbapi2.py",行33,在 ModuleNotFoundError:没有名为""pysqlcipher3._sqlite3""的模块"" [9248]无法执行脚本testdb
该错误引用我的dev PC上的路径,还引用dbapi2.py中的第33行,即:-
from pysqlcipher3._sqlite3 import *
我尝试在运行pyinstaller时添加各种文件,但没有任何进展,我确信这不是一件简单的事情,但需要帮助。
推荐答案
不久前我遇到过类似的问题,有一件事对我很有效,那就是在pyinstaller的规范文件中添加sqlite3DLL。也可以从命令行添加它。我以前尝试过很多其他方法,比如重新创建一个conda环境和重新构建我的python包,但都不起作用。在添加pyinstaller二进制文件的规范文件中,请尝试类似。
binaries=[('C:\Users\myname\newfolder\sqlite3.dll','.')]
您可以从https://www.sqlite.org/download.html下载DLL,具体取决于Windows或Linux平台。一旦添加了DLL并重新编译,应该就可以了。我认为这个错误主要是在dbapi2请求sqlite3DLL时发生的,在我的例子中,DLL文件夹中至少缺少该DLL。我刚刚下载并将其添加到规范文件中,但您也可以尝试将其添加到挂钩路径或ENV文件夹中。
这篇关于使用pyinstaller和pysqlcipher创建一个文件exe时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用pyinstaller和pysqlcipher创建一个文件exe时出现问题
基础教程推荐
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01