[英]they could not be imported: _sqlite3 /Python3.6 / CentOS6
环境
# 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
当我使用usr 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
·为什么?
/usr/local/lib/python2.7/lib-dynload/_sqlite3.so
是Python 2 Python包装器模块,而不是实际的SQLite库。 此外,-- --with-sqlite
应该指向标头 ,而不是共享库。 编译需要头文件,动态库位于运行时。
安装sqlite-devel
标头后,您不必使用--with-sqlite
; 将它们放在usr/include
中的Python配置脚本知道如何查找的默认位置。 仅sqlite3ext.h
文件位于非默认位置时,才可以使用该选项指向包含sqlite3.h
和sqlite3ext.h
头文件的目录。
编译后, sqlite3
Python模块将加载_sqlite3*.so
扩展模块(确切的名称与确切的Python 3版本和平台不同),动态加载程序将找到正确的libsqlite3.so
版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.