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