python3安装sqlite3库

启动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试试能不能正常导入

    原文作者:程序员同行者
    原文地址: https://www.jianshu.com/p/3ca63eb17553
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞