Mar*_*lle 4 python sqlite pyinstaller
我已经查看了有关此主题的其他主题,但到目前为止我还没有任何运气。
我正在尝试使用 pyinstaller 创建一个验证数据的 .exe。我可以成功创建一个可执行文件,并且它将运行,但代码的 sqlite3 部分不起作用。
我收到以下错误:
文件“cold_call.py”,第 6 行,文件“/tmp/_MEIOlQDSM/mainFrame.py”,第 18 行,导入 userDefine 文件“/tmp/_MEIOlQDSM/userDefine.py”,第 20 行,导入 work_db_common 文件“/ tmp/_MEIOlQDSM/work_db_common.py”,第 4 行,在 import sqlite3 文件“/tmp/_MEIOlQDSM/sqlite3/ init .py”中,第 23 行,在 from sqlite3.dbapi2 import * 文件“/tmp/_MEIOlQDSM/sqlite3/dbapi2. py”,第 27 行,来自 _sqlite3 import * ImportError:没有名为“_sqlite3”的模块
但是当我运行 python3 my_file.py 时,它可以与 sqlite3 一起正常工作。
我在 opensuse 42.3 上使用 python3.4。
从 zypper 安装的 sqlite3 软件包
我+ | libsqlite3-0 | libsqlite3-0 可嵌入 SQL 数据库引擎的共享库 | 包裹
我+ | sqlite3 | 嵌入式 SQL 数据库引擎 | 包裹
我+ | sqlite3-开发 | 嵌入式 SQL 数据库引擎 | 包裹
我尝试过重新安装python3,但还是不行。
然后,在 *.spec 文件中我编写了以下脚本:
def get_sqlite3_path():
import sqlite3
sqlite3_path = sqlite3.__path__[0]
print('sqlite3_path = {}'.format(sqlite3_path))
return sqlite3_path
...
dict_tree = Tree(get_sqlite3_path(), prefix='sqlite3', excludes=["*.pyc"])
a.datas += dict_tree
a.binaries = filter(lambda x: 'sqlite3' not in x[0], a.binaries)
Run Code Online (Sandbox Code Playgroud)
没有成功!
知道如何解决这个问题吗?
PS这段代码
print('sqlite3_path = {}'.format(sqlite3_path))
Run Code Online (Sandbox Code Playgroud)
回报
sqlite3_path = /usr/lib64/python3.4/sqlite3