簡體   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