启动scrapy的时候报如下错误
raceback (most recent call last):
File "/usr/local/python3/lib/python3.6/site-packages/Twisted-17.1.0-py3.6-linux-x86_64.egg/twisted/internet/defer.py", line 1301,
in _inlineCallbacks
result = g.send(result)
File "/usr/local/python3/lib/python3.6/site-packages/scrapy/crawler.py", line 82, in crawl
yield self.engine.open_spider(self.spider, start_requests)
ModuleNotFoundError: No module named '_sqlite3'
这是因为安装的python版本没有集成sqlite3,所有没有找到sqlite3.so的库。
解决方案一
yum install sqlite*
然后重新编译python或者重新安装python
如果上述方案不管用可使用方案二
解决方案二
通过编译安装sqlite3,下载地址:https://www.sqlite.org/download.html
# 先解压下载的安装包喔
./configure --prefix=/usr/local/sqlite3
make && make install
#手动安装sqlite3 完成的时候会有这么一段提示:
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/sqlite3/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
- use the '-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to '/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
这段内容显示了sqlite3的安装路径:/usr/local/sqlite3/lib。
特别注意add LIBDIR to the 'LD_LIBRARY_PATH' environment variablesqlite
建议添加环境变量。
export LD_LIBRARY_PATH=/usr/local/sqlite3
设置一个环境变量,然后重新编译python3安装就能够成功了。
然后打开python安装源码的setup.py修改如下:
sqlite_inc_paths = [ '/usr/include',
'/usr/local/sqlite3/include', #增加该部分内容
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
进源码目录里编译即可
make
make install
然后可以进python环境 import sqlite3试试能不能正常导入