python-3.x - 无法导入 : _sqlite3 /Python3. 6 / CentOS6

标签 python-3.x centos

环境

# cat /etc/redhat-release

CentOS release 6.8 (Final)


$ 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 时,发生错误

No module named '_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 build finished successfully!

Following modules built successfully but were removed because they could not be imported: _sqlite3



·为什么?

最佳答案

/usr/local/lib/python2.7/lib-dynload/_sqlite3.so是 Python 2 Python 包装器模块,而不是实际的 SQLite 库。此外,--with-sqlite应该指向 标题 ,而不是共享库。编译需要头文件,动态库位于运行时。

不是说你需要使用--with-sqlite一旦你安装了sqlite-devel header ;它们被放置在 Python 配置脚本知道如何找到的默认位置,在 usr/include 中.只有当您在非默认位置有标题时,您才会使用该选项指向保存 sqlite3.h 的目录。和 sqlite3ext.h标题。

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

关于python-3.x - 无法导入 : _sqlite3 /Python3. 6 / CentOS6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44281547/

相关文章:

python - 在python中制作日期转换器的问题

vim - :syntax on does nothing?时如何在vim中有颜色

python - 为什么我的生成器没有返回任何值?

python - 如何使用过滤器搜索特定数据集

linux - 配置 promtail 2.0 以读取文件 .log

centos - 将 KVM 虚拟机导出到 HyperV

docker - 在docker中构建net core 5.0时显示错误 "An error occurred while processing your request"(centos 8/VScode/Docker/EF Core)?

linux - Redhat/CentOS - 找不到 `GLIBC_2.18'

python - 为什么 concurrent.futures 不复制参数?

python - Psycopg2 连接 sql 数据库到 pandas 数据框