在使用numpy.distutils.core.setup之前安装numpy



我正在使用numpy.distutils来设置一个具有frotran模块的软件包(mypackage(。问题是,如果我在没有numpy的环境中pip install mypackage,则会收到以下错误:

ModuleNotFoundError: 没有名为"numpy"的模块

简单的解决方案是要求用户(如果我设法拥有(在安装我的软件包之前pip install numpy,但我认为这不是一个非常优雅的解决方案。

我想到了在导入 numpy 之前只用setup_requires=['numpy']调用setuptools.setup的想法,它似乎运行良好。这是我setup.py

import setuptools
setuptools.setup(
setup_requires=[
'numpy'
],)
from numpy.distutils.core import setup, Extension
mod = Extension(name='mypackage.amodule', sources=['source/a.f90'])
setup(name='mypackage',
packages=['mypackage'],
ext_modules=[mod],)

老实说,我不完全理解调用空setup()(没有名称,没有包(意味着什么。这是一个很好的解决方案吗?这在某种程度上是一种不好的做法吗?

这是一个常见问题。如何安装构建时依赖项?您可能希望使用pyproject.toml文件并利用build-system功能。参见 PEP517。这里有一个例子:

[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "numpy"]

使用pep517工具构建分布(sdist轮子(。

最新更新