[英]Include sqlite3 in pyinstaller
我查看了有关该主题的其他主题,到目前为止,我还没有碰到任何运气。
我正在尝试使用pyinstaller创建一个用于验证数据的.exe。 我可以成功创建一个可执行文件,它可以运行,但是代码的sqlite3部分无法正常工作。
我收到以下错误:
文件“ cold_call.py”,第6行,文件“ /tmp/_MEIOlQDSM/mainFrame.py”,第18行,导入userDefine文件“ /tmp/_MEIOlQDSM/userDefine.py”,第20行,导入work_db_common文件,“ /来自sqlite3.dbapi2 import的导入sqlite3文件“ / tmp / _MEIOlQDSM / sqlite3 / init .py”第23行的“ tmp / _MEIOlQDSM / work_db_common.py”,导入*文件“ / tmp / _MEIOlQDSM / sqlite3 / dbapi2”。 py”,第27行,来自_sqlite3 import * ImportError:没有名为“ _sqlite3”的模块
但是当我运行python3 my_file.py时,它与sqlite3可以正常工作。
我在opensuse 42.3上使用python3.4。
从zypper安装的sqlite3软件包
i + | libsqlite3-0 | 嵌入式SQL数据库引擎的共享库| 包
i + | sqlite3 | 可嵌入的SQL数据库引擎| 包
i + | sqlite3-devel | 可嵌入的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)
没有成功!
任何想法如何解决此问题?
PS此代码
print('sqlite3_path = {}'.format(sqlite3_path))
回报
sqlite3_path = /usr/lib64/python3.4/sqlite3
这个答案解决了这个问题。
--hidden-import=sqlite3
exe时添加--hidden-import=sqlite3
。
pyinstaller your_script.py --onefile --hidden-import = sqlite3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.