【问题标题】:Missing sqlite3 after Python3 compilePython3 编译后缺少 sqlite3
【发布时间】:2013-09-16 01:12:06
【问题描述】:

我的问题很像其他几个问题。手动编译 Python,sqlite3 不见了:

主要区别在于我使用的是 Debian Linux 系统(与本题不同:OS X 10.8.2 python 3 import sqlite error)和 Python3(与本题和其他一系列问题不同:Cannot import SQLite with Python 2.6)。

我希望得到一些指导,说明在哪个方向进行故障排除。根据一些 Linux-but-old-Python 问题,像我遇到的错误可能是由以下原因引起的在链接或其他东西(_sqlite3.so)期间缺少资源。我的系统上有两个这样的文件,它们都在较旧的 Python 安装中,......但与 Python3 没有任何关系。还是其中之一足够好?或者他们说安装 libsqlite3-dev 包,然后重新编译 Python。我这样做了,但我不明白在我的系统上安装这个包会如何影响编译过程。事实上,它没有。第二次编译给了我第二个没有 sqlite3 的 Python。

我希望我能做到apt-get install python3,但 Debian 在其稳定性方面只有 Python 3.2,我需要最新版本。想法?

【问题讨论】:

    标签: python python-3.x sqlite compilation


    【解决方案1】:

    在编译 Python 之前,您需要安装 libsqlite3(基于 Debian)或 sqlite-devel(基于 RedHat)和相关的头文件,因为 Python 需要在编译过程中找到它们。

    你确定跑了吗:

    1. ./configure
    2. make
    3. make install

    按照这个特定的顺序?没有遗漏步骤?

    【讨论】:

    • 如何让 Python 在编译过程中找到它们?我提到我曾尝试安装那个确切的软件包。
    • @Bepetersn 我正在更新答案,你能检查你是否遵循了这三个步骤?如果还是不行,能否显示编译过程中出现的任何警告?
    • @Bepetersn 这里的关键步骤是./configure。您应该检查 sqlite3 的输出。
    • 当我在 RHEL6 上手动编译 python 2.7 时,由于 64 位错误和 typedef,编译器在尝试构建 sqlite3 模块时会崩溃。 (不确定我在哪里找到该链接)尝试再次编译 python,并仔细查看输出,看看为什么(我认为)sqlite 模块在编译期间崩溃。
    • @Bepetersn 供将来参考,configure 是搜索可用库的步骤。头文件(包含在 -dev 包中)是告诉编译器如何针对系统上的 sqlite 二进制文件进行构建的文件。
    【解决方案2】:

    apt-get install libsqlite3-dev之后

    然后

    ./configure --prefix=/opt/python3.7.4 --with-ssl --with-pydebug
    
    make
    make install
    

    注意:你可能还需要apt-get install libssl-dev,如果你正在编译python3.7,openssl版本必须高于1.0.2

    对我来说,我使用的是 ubuntu 14.04(值得信赖)我找不到 libssl-dev 包来满足编译支持 ssl 的 python3.7 的要求。我修改了我的/etc/apt/sourcelist.d

    deb http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted
    deb-src http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted
    

    安装较新的 libssl-dev 后,再改回原来的

    deb http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted
    deb-src http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted
    

    【讨论】:

    • 1. --with-ssl 现在好像不需要了 2. libffi-dev 也是需要的,否则make install时会报错“No module named '_ctypes' when using Value from module multiprocessing”
    【解决方案3】:

    如果您只有有限的用户访问权限(没有 root 或 sudo 权限),您可以安装到用户可访问的本地环境,如下所示:

    tar -xvf sqlite-autoconf-3270200.tar.gz
    cd sqlite-autoconf-3270200
    ./configure --prefix=$HOME/.local
    make && make install
    

    这将安装在您的 ~/.local 树上。

    如果缺少~/.local/bin,请将其添加到您的路径中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-30
      • 2010-10-02
      • 2023-03-10
      • 2013-08-11
      • 2019-01-05
      • 2013-01-10
      • 2016-09-27
      • 2016-09-26
      相关资源
      最近更新 更多