gmpy2 安装但找不到 libmpc.so.3
gmpy2 installs but can't find libmpc.so.3
我想将 gmpy2 与 python 2.7 一起使用,但是当我尝试导入它时,我得到:
>>> 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 安装了 gmpy2:pip install -user 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 -lmpc
和 gcc bar.c -lmpfr
并且代码按预期编译和工作。我还使用 pip install 让 gmpy 工作。我认为问题在于它们没有安装在默认目录中,因为我没有 sudo 权限。
libmpc.so.3
所在的目录在pip吐出的gcc调用中,我也设置了CPATH
和CPPFLAGS
在my_prefix/include
和LDFLAGS
看my_prefix/lib
.
我真的不想使用 MPC 的功能,所以如果有一个简单的选项可以不安装 gmpy2 的那个部分,我会很高兴。
我真的很困惑,我知道 pip 无法构建库,我已经离开并安装了依赖项,但通常一旦库通过 pip 它就可以工作。
尝试执行以下操作,因为它可能会在旧版本中修复:
pip install --upgrade setuptools pip
pip uninstall gmpy2
pip install gmpy2
我维护 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
由 pip 调用。例如,我在 /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)。
我想将 gmpy2 与 python 2.7 一起使用,但是当我尝试导入它时,我得到:
>>> 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 安装了 gmpy2:pip install -user 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 -lmpc
和 gcc bar.c -lmpfr
并且代码按预期编译和工作。我还使用 pip install 让 gmpy 工作。我认为问题在于它们没有安装在默认目录中,因为我没有 sudo 权限。
libmpc.so.3
所在的目录在pip吐出的gcc调用中,我也设置了CPATH
和CPPFLAGS
在my_prefix/include
和LDFLAGS
看my_prefix/lib
.
我真的不想使用 MPC 的功能,所以如果有一个简单的选项可以不安装 gmpy2 的那个部分,我会很高兴。
我真的很困惑,我知道 pip 无法构建库,我已经离开并安装了依赖项,但通常一旦库通过 pip 它就可以工作。
尝试执行以下操作,因为它可能会在旧版本中修复:
pip install --upgrade setuptools pip
pip uninstall gmpy2
pip install gmpy2
我维护 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
由 pip 调用。例如,我在 /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)。