gmpy2安装但无法找到libmpc.so.3

时间:2017-01-30 12:03:52

标签: python python-2.7 gcc gmpy

我想在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安装工作。我认为问题在于它们没有安装在默认目录中,因为我没有sudo权限。

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

我真的不想使用MPC的功能,所以如果有一个简单的选择就是不安装gmpy2那部分我会对此感到满意。

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

2 个答案:

答案 0 :(得分: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版本,则需要将新文件的位置指定给被调用的基础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)。

答案 1 :(得分:0)

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

  1.   

    pip install --upgrade setuptools pip

  2.   

    pip uninstall gmpy2

  3.   

    pip install gmpy2