Python 在使用numpy.distutils.core.setup之前安装numpy
我正在使用Python 在使用numpy.distutils.core.setup之前安装numpy,python,numpy,installation,setuptools,f2py,Python,Numpy,Installation,Setuptools,F2py,我正在使用numpy.distutils设置一个包含frotran模块的包(mypackage)。问题是,如果我在没有numpy的环境中执行pip安装mypackage,则会出现以下错误: ModuleNotFoundError:没有名为“numpy”的模块 最简单的解决方案是在用户安装我的软件包之前要求他们(如果我有)安装numpy,但我认为这不是一个非常优雅的解决方案 在导入numpy之前,我想到了调用setuptools.setup的想法,只需setup\u requires=['nump
numpy.distutils
设置一个包含frotran模块的包(mypackage)。问题是,如果我在没有numpy的环境中执行pip安装mypackage
,则会出现以下错误:
ModuleNotFoundError:没有名为“numpy”的模块
最简单的解决方案是在用户安装我的软件包之前要求他们(如果我有)安装numpy,但我认为这不是一个非常优雅的解决方案
在导入numpy之前,我想到了调用setuptools.setup
的想法,只需setup\u requires=['numpy']
,它似乎工作得很好。这是我的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]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "numpy"]
使用来构建发行版(sdist和wheel)。我已经尝试过,但它似乎无法构建模块(amodule)。可能是因为我必须使用不同的后端吗?@Felix可能会为您的问题添加一个更新,以显示您的进度。在
setup.py
中,确保删除第一个setuptools.setup(…)
调用。剩下的似乎没问题,我错了;错误是由完全不同的问题引起的。很抱歉,这似乎无法安装numpy。构建工作正常,但python-c“import numpy”返回一个错误。因此,如果您的软件包需要numpy,您仍然应该在setup.py
的install\u requires
中列出它。是吗?@Felix是的,构建时间和安装时间依赖关系可以是两个完全不同的列表。因此,最终可能需要在两者中列出一些依赖项,比如在您的案例中的numpy。