繁体   English   中英

在pyinstaller中包含sqlite3

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM