本地编译的 libffi 文件在重新编译 python 3 包时没有被拾取

问题描述

在我需要在本地安装 Python 3 和一些相关软件包以启用 Tkinter 设置并使用 openpyxl 使用 GUI 设置读取/写入 .xlsx 文件的情况下。

  1. 首先,我在本地安装了 Python 3.9.1,当我尝试执行“import tkinter”时,它说找不到所需的模块。

  2. 然后在本地安装 tcl 和 tk 库并重新编译 Python 库,如下所示。在这一步之后安装了 Python 3,然后也在构建 tkinter 库等。

    ./configure --prefix=~/installed --with-tcltk-libs='-L~/installed/lib' --with-tcltk-includes='-I~/installed/include

  3. 接下来我想在本地安装 openpyxl 来读/写 .xlsx 文件。所以我尝试使用 pip3 install openpyxl 进行安装,但它说

    “ModuleNotFoundError:没有名为‘_ctypes’的模块”

  4. 尝试下载 libffi 并在本地安装。然后尝试使用以下命令重新编译 python 文件

    ./configure --prefix=~/installed --with-tcltk-libs='-L~/installed/lib' --with-tcltk-includes='-I~/installed/include' LDFLAGS=` pkg-config --libs-only-L~/installed/lib/../lib64 -I~/installed/include

    但它无法获取相同的内容,并且在生成 python 文件期间,它说“以下模块已成功构建但由于无法导入而被删除:_ctypes”。

那么,如何确保获取所需的/本地安装的 libffi 文件?请提供您的建议!

解决方法

PKG_CONFIG_PATH之前导出CFLAGSLDFLAGS./configure

export PKG_CONFIG_PATH=/home/jacob/libffi/lib/pkgconfig
export CFLAGS=-I/home/jacob/libffi/include
export LDFLAGS=-L/home/jacob/libffi/lib

设法交叉编译 Python 3.9.0Android/arm64 使用 NDKlibffiAndroid 像这样,但它应该适用于 GNU/Linux/x86嗯。

,

我能够解决所有问题并在本地安装所需的 python n 依赖库。捕获了以下 git 链接中的所有步骤..

https://hellovimo.github.io/uvm_testbench_gen/localpythoninstall.html

谢谢!

,

要么像建议的那样导出 LDFLAGSCFLAGSPKG_CONFIG_PATH,或者直接将变量传递给配置脚本:

libffi='/path/to/libffi'

./configure \
    LDFLAGS="-L${libffi}/lib64 -Wl,--rpath=${libffi}/lib64" \
    CFLAGS="-I${libffi}/include" \
    PKG_CONFIG_PATH="${libffi}/lib/pkgconfig"

那么:

make && make install