gpt4 book ai didi

python - setup.py 用于依赖于 cython 和 f2py 的包

转载 作者:IT老高 更新时间:2023-10-28 20:55:49 27 4
gpt4 key购买 nike

我想为一个 python 包创建一个 setup.py 脚本,其中包含几个依赖于 cython 和 f2py 的子模块。我曾尝试使用 setuptools 和 numpy.distutils,但到目前为止都失败了:

使用设置工具

我能够使用 setuptools 编译我的 cython 扩展(并为包的其余部分创建安装)。但是,我一直无法弄清楚如何使用 setuptools 来生成 f2py 扩展。经过大量搜索,我只找到了相当古老的messages like this one声明必须使用 numpy.distutils 编译 f2py 模块。

使用 numpy.distutils

我能够使用 numpy.distutils 编译我的 f2py 扩展(并为包的其余部分创建安装)。但是,我一直无法弄清楚如何让 numpy.distutils 编译我的 cython 扩展,因为它最近总是尝试使用 pyrex 来编译它(而且我正在使用特定于 cython 的扩展)。我已经进行了搜索以弄清楚如何获取 numpy.distutils 用于 cython 文件,并且 - 至少在一年前 - 他们建议应用 monkey patch到 numpy.distutils。似乎应用这样的猴子补丁也限制了可以传递给 Cython 的选项。

我的问题是:为依赖于 f2py 和 cython 的包编写 setup.py 脚本的推荐方法是什么?对 numpy.distutils 应用补丁真的是可行的方法吗?

最佳答案

您可以在 setup.py 中单独调用每个,如
http://answerpot.com/showthread.php?601643-cython%20and%20f2py

# Cython extension
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

setup(
ext_modules = [Extension( 'cext', ['cext.pyx'] )],
cmdclass = {'build_ext': build_ext},
script_args = ['build_ext', '--inplace'],
)

# Fortran extension
from numpy.distutils.core import setup, Extension
setup(
ext_modules = [Extension( 'fext', ['fext.f90'] )],
)

你的调用上下文(我认为他们调用了这个命名空间,不确定)
必须改变当前对象的扩展和功能
设置()是。

第一个 setup() 调用,它是 distutils.extension.Extension
和 distutils.core.setup()

第二个 setup() 调用,它是 numpy.distutils.core.Extension
和 numpy.distutils.core.setup()

关于python - setup.py 用于依赖于 cython 和 f2py 的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7932028/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com