它们无法导入:_sqlite3 /Python3.6 / CentOS6

时间:2017-05-31 09:55:57

标签: python-3.x centos

环境

# 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

·为什么?

1 个答案:

答案 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.hsqlite3ext.h标题的目录。

编译完成后,sqlite3 Python模块加载_sqlite3*.so扩展模块(确切名称与精确的Python 3版本和平台不同),动态加载器将找到正确的{{1} }版本。