提问人:chdy 提问时间:12/21/2021 更新时间:4/4/2022 访问量:1830
无法打开包含文件:“gmp.h”:没有这样的文件或目录(Python/Cython)
Cannot open include file: 'gmp.h': No such file or directory (Python/Cython)
问:
我正在学习如何将 gmpy2 与 Cython 集成。从文档中,我得到了一个示例代码。由于我不太确定发生了什么,我觉得我可以通过使用提供的示例代码来学习如何在 Cython 中使用 gmpy。
示例代码:
setup.py
"A minimal setup.py for compiling test_gmpy2.pyx"
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
import sys
ext = Extension("test_gmpy2", ["test_gmpy2.pyx"], include_dirs=sys.path, libraries=['gmp', 'mpfr', 'mpc'])
setup(
name="cython_gmpy_test",
ext_modules=cythonize([ext], include_path=sys.path)
)
test_gmpy2.pyx
"A minimal cython file test_gmpy2.pyx"
from gmpy2 cimport *
cdef extern from "gmp.h":
void mpz_set_si(mpz_t, long)
import_gmpy2() # needed to initialize the C-API
cdef mpz z = GMPy_MPZ_New(NULL)
mpz_set_si(MPZ(z), -7)
print(z + 3)
运行 setup.py 给了我这个错误:
fatal error C1083: Cannot open include file: 'gmp.h': No such file or directory
怎么了?我该如何解决?我检查了我的安装是否有 gmpy。我相信这没有任何问题。
答:
1赞
GBy
4/4/2022
#1
我可以举一个工作的例子。fractalshades 软件包包括一个 Cython 扩展,它导入 () gmpy2 并在 Linux 和 Windows 下编译。cimport
Cython 扩展的代码托管在此处 https://github.com/GBillotey/Fractalshades/blob/master/src/fractalshades/mpmath_utils/FP_loop.pyx
针对 Windows(使用 MS Visual Studio)编译的关键部分是:
- 包括 GMPY2 安装目录中的头文件
- 在 dll 中调用函数时,导入库(.lib 文件)是必需的 - 它提供了在运行时挂接到 DLL 的存根。要生成这些 .lib,可以使用 Visual Studio 提供的 dumpbin 和 lib 可执行文件。
有关实现详细信息,Windows 版本在 github 运行器上运行,完整脚本可作为 Github 工作流使用。
评论
gmp.h
sudo apt install libmpc-dev