【问题标题】:gmpy2 installs but can't find libmpc.so.3gmpy2 安装但找不到 libmpc.so.3
【发布时间】:2017-01-30 12:03:51
【问题描述】:

我想在 python 2.7 中使用 gmpy2,但是当我尝试导入它时,我得到:

>>> import gmpy2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libmpc.so.3: cannot open shared object file: No such file or directory

我使用 pip:pip install -user gmpy2 安装了 gmpy2,除了说,安装看起来还不错

  Could not find .egg-info directory in install record for gmpy2

但之后它说安装成功。

我已经安装了 MPC (1.0.3)、GMP (6.1.1) 和 MPFR (3.1.4) 并且它们都可以工作,我的意思是我可以调用 gcc foo.c -lmpcgcc bar.c -lmpfr 并且代码编译和按预期工作。我还使用 pip install 让 gmpy 工作。我认为问题在于它们没有安装在默认目录中,因为我没有 sudo 权限。

libmpc.so.3所在的目录在pip吐出的gcc调用中,我还设置了CPATHCPPFLAGS去查看my_prefix/includeLDFLAGS去查看my_prefix/lib

我真的不想使用 MPC 的功能,所以如果有一个简单的选项可以不安装 gmpy2 的那部分,我会很高兴的。

我真的很困惑,我发现 pip 无法构建库,我已经离开并安装了依赖项,但通常一旦库通过 pip 它就可以工作。

【问题讨论】:

    标签: python python-2.7 gcc gmpy


    【解决方案1】:

    我维护 gmpy2,有几个命令行选项可以传递给 setup.py,这可能会有所帮助。我现在无法测试 pip 语法,但这里有一些选项:

    --shared=/path/to/gmp,mpfr,mpc 将配置 gmpy2 从指定目录加载库。

    如果可以找到合适的库,--static--static=/path/to/gmp,mpfr,mpc 将创建 gmpy2 的静态链接版本。

    您也可以直接使用 setup.py 尝试构建。它可能会产生更好的错误消息。同样,未经测试的命令:

    python setup.py build_ext --static=/path/to/gmp,mpfr,mpc 应该编译一个独立的、静态链接的 gmpy2.so,它需要移动到适当的位置。

    更新

    我已经能够测试 pip 的选项。

    如果您尝试使用 Linux 发行版未提供的 GMP、MPFR 和 MPC 版本,则需要将新文件的位置指定到 pip 调用的底层setup.py。例如,我在/home/case/local 本地安装了更新版本。以下命令将配置 gmpy2 以使用这些版本:

    pip install --install-option="--shared=/home/case/local" --user gmpy2
    

    要编译静态链接版本(例如,为了简化分发到集群中的其他系统),您应该使用以下内容:

    pip install --install-option="--static=/home/case/local" --user gmpy2
    

    setup.py 将使用指定的基目录来配置正确的 INCLUDE 路径(/home/case/local/include)和运行时库路径(/home/case/local/lib)。

    【讨论】:

    • 谢谢!我使用了pip install --install-option="--shared=/home/case/local" --user gmpy2,其中/home/case/local 是我在安装GMP 和MPC 时使用的前缀,现在它运行良好。
    【解决方案2】:

    尝试执行以下操作,因为它可能会在旧版本中修复:

    1. pip install --upgrade setuptools pip

    2. pip 卸载 gmpy2

    3. pip 安装 gmpy2

    【讨论】:

    • 我在升级 setuptools 时遇到了问题,因为我无法更新我正在运行的全局工具 pip install --user --upgrade setuptools 但它不起作用。感谢您的建议,如果我有进展,我会通知您。
    猜你喜欢
    • 2017-02-25
    • 2012-12-20
    • 2017-09-06
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2013-05-25
    • 2021-08-06
    相关资源
    最近更新 更多