【问题标题】:Locally compiled libffi files not getting picked up while recompiling python 3 package重新编译 python 3 包时未拾取本地编译的 libffi 文件
【发布时间】:2021-04-17 20:27:37
【问题描述】:

在我需要在本地安装 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 文件?请提出您的建议!

【问题讨论】:

  • 这似乎是 CPython 的一个老问题。我做了一些快速研究,this link 看起来很有希望。
  • 尝试重新安装 python 并在安装程序中确保检查所有选项

标签: python python-3.x openpyxl libffi python-install


【解决方案1】:

./configure之前导出PKG_CONFIG_PATHCFLAGSLDFLAGS

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

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

【讨论】:

    【解决方案2】:

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

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

    谢谢!

    【讨论】:

      【解决方案3】:

      如建议的那样导出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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-12
        • 2015-02-06
        • 1970-01-01
        • 2016-05-24
        • 1970-01-01
        • 1970-01-01
        • 2019-08-20
        • 1970-01-01
        相关资源
        最近更新 更多