在使用 numpy.distutils.core.setup 之前安装 numpy
Installing numpy before using numpy.distutils.core.setup
我正在使用 numpy.distutils
设置一个包含 frotran 模块的包 (mypackage)。问题是,如果我在没有 numpy 的环境中执行 pip install mypackage
,我会收到以下错误:
ModuleNotFoundError: No module named '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()
(没有名称,没有包)意味着什么。 这是一个好的解决方案吗?这是某种不好的做法吗?
这是一个常见问题。如何安装 build-time 依赖项?您可能想要使用 pyproject.toml
文件并利用 build-system
功能。参见 PEP517。这里有一个例子:
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "numpy"]
使用 pep517
tool 构建分布(sdist 和 wheel)。
我正在使用 numpy.distutils
设置一个包含 frotran 模块的包 (mypackage)。问题是,如果我在没有 numpy 的环境中执行 pip install mypackage
,我会收到以下错误:
ModuleNotFoundError: No module named '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()
(没有名称,没有包)意味着什么。 这是一个好的解决方案吗?这是某种不好的做法吗?
这是一个常见问题。如何安装 build-time 依赖项?您可能想要使用 pyproject.toml
文件并利用 build-system
功能。参见 PEP517。这里有一个例子:
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "numpy"]
使用 pep517
tool 构建分布(sdist 和 wheel)。