环境
# cat /etc/redhat-release
CentOS 6.8版(最终版)
$ which python3.6
/usr/local/bin/python3.6
# find /usr/local -name _sqlite3.so
/usr/local/lib/python2.7/lib-dynload/_sqlite3.so
# yum install sqlite-devel
当我使用SQLite3时,发生了错误
没有名为'_sqlite3'的模块
我决定再次从源码构建它。
# ./configure --enable-shared --prefix=/usr/local LDFLAGS="-Wl,-rpath /usr/local/lib" --with-sqlite=/usr/local/lib/python2.7/lib-dynload/_sqlite3.so
# make
Python构建成功完成!
以下模块成功构建但因为它们而被删除 无法导入: _sqlite3
·为什么?
答案 0 :(得分:0)
/usr/local/lib/python2.7/lib-dynload/_sqlite3.so
是Python 2 Python包装器模块,而不是实际的SQLite库。此外,--with-sqlite
应指向标头,而不是共享库。编译需要标题,动态库位于运行时。
安装--with-sqlite
标头后,您不需要使用sqlite-devel
;在usr/include
中,这些位置放在Python配置脚本知道如何查找的默认位置。只有当您在非默认位置有标题时,才会使用该选项指向包含sqlite3.h
和sqlite3ext.h
标题的目录。
编译完成后,sqlite3
Python模块加载_sqlite3*.so
扩展模块(确切名称与精确的Python 3版本和平台不同),动态加载器将找到正确的{{1} }版本。