Linux ModuleNotFoundError: No module named '_sqlite3'

在Ubuntu中運行Scrapy遇到的問題。
思路,補全缺失的庫,重新編譯python解釋器。

一、安裝缺失的sqlite3庫

sudo apt-get install libsqlite3-dev

你可以試試: whereis sqlite3

如果沒有出現/usr/include/sqlite3.h這個頭文件。。。

你再試試 sudo apt-get install sqlite3* 這種方式有點浪費

二、重新編譯python

提供一個安裝python3.6.5的參考案例, 官方其他版本

sudo apt install libffi-dev
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
tar -xvf Python-3.6.5.tar.xz && cd Python-3.6.5 
./configure --enable-loadable-sqlite-extensions && \
make && sudo make install

三、安裝Twisted

直接安裝,一般都會報錯。
pip install Twisted
下載源碼安裝吧。

wget https://github.com/twisted/twisted/archive/twisted-17.5.0.tar.gz
tar -zxvf  twisted-17.5.0.tar.gz
cd twisted-18.4.0 && python setup.py install

首先,python3.6.5 和 twisted-17.5.0這兩種組合是沒有出現問題的。我嘗試過安裝最新的twisted-18.9.0,出於某種未知的原因,編譯後並不能用。版本過低會出現另外的錯。建議安裝16版本以上的。我遇上另外一個坑就是twisted版本過低(13.幾來着)。

四、原因分析

一頓瞎操作導致機器宕機。重新安裝環境,自帶的是python3.5,需要安裝更新的python版本如3.6或3.7,自己下載python源碼編譯安裝,如果是一個新機器,這就非常容易出現這個問題。

原因:編譯python的時候,缺失sqlite3的庫,並不會直接報錯。一旦安裝Twisted,運行 yield .這個錯誤就出來。

巨坑,第二次踩坑。。。

編譯的時候會在這些目錄下找sqlite3,沒找到,編譯的時候也不報錯,坑。。

sqlite_inc_paths = [ '/usr/include', 
                    '/usr/local/sqlite3/include', 
                    '/usr/include/sqlite', 
                    '/usr/include/sqlite3', 
                    '/usr/local/include', 
                    '/usr/local/include/sqlite',
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章