python安装文件中的numpy依赖项

python安装文件中的numpy依赖项,python,numpy,distutils,setup.py,cythonize,Python,Numpy,Distutils,Setup.py,Cythonize,这是一个出现的问题,但我还没有找到一个好的解决办法。因此,我有一个python项目,我希望用户能够在最小的anaconda虚拟环境中安装它 我的代码还使用Cython来加速一些计算密集型函数,并要求numpy头能够对它们进行Cython化。因此,我有一个设置python脚本,如下所示: from distutils.extension import Extension from setuptools import setup, Extension def create_extension()

这是一个出现的问题,但我还没有找到一个好的解决办法。因此,我有一个python项目,我希望用户能够在最小的anaconda虚拟环境中安装它

我的代码还使用Cython来加速一些计算密集型函数,并要求numpy头能够对它们进行Cython化。因此,我有一个设置python脚本,如下所示:

from distutils.extension import Extension
from setuptools import setup, Extension


def create_extension():
    import numpy as np  # No luck even though I keep it at function scope
    return Extension("speed",
                     sources=["app/perf/booster.pyx"],
                     include_dirs=[np.get_include()],  # problematic
                     language="c++",
                     libraries=[],
                     extra_link_args=[])

setup(
    setup_requires=[
        'setuptools>=18.0',
        'numpy==1.13.3',
        'cython==0.28.2'
    ],

    ext_modules=[
        create_extension(),
    ],

......
install_requires=[
    'numpy==1.13.3',
    'Cython==0.28.2',
    'nibabel==2.2.1',
    'scipy==1.0.0'
],
)
但是,当我运行
构建
安装
时,numpy输入端口失败。虽然我已将其添加到
setup\u requires
组和
install\u requires
组,但它似乎没有任何效果

当然,我可以事先要求用户安装numpy,但我更愿意让它一步到位,我想知道是否有办法实现这一点

在评论之后,我在该线程中尝试了以下解决方案:

from distutils.extension import Extension
from setuptools import setup, Extension


def create_extension():
    import numpy as np  # No luck even though I keep it at function scope
    return Extension("speed",
                     sources=["app/perf/booster.pyx"],
                     include_dirs=[np.get_include()],  # problematic
                     language="c++",
                     libraries=[],
                     extra_link_args=[])

setup(
    setup_requires=[
        'setuptools>=18.0',
        'numpy==1.13.3',
        'cython==0.28.2'
    ],

    ext_modules=[
        create_extension(),
    ],

......
install_requires=[
    'numpy==1.13.3',
    'Cython==0.28.2',
    'nibabel==2.2.1',
    'scipy==1.0.0'
],
)
f

现在,此操作失败,出现错误:

error: unknown file type '.pyx' (from 'app/perf/booster.pyx')

你能证实我链接的问题中投票率最高的答案是否有效吗?我很久以前就问过这个问题,但不幸的是,我从来没有机会去测试它。如果它确实有效,我将继续并将其标记为正确答案。@user5424谢谢你的指针。我确实试过了,请看我的编辑。我可能没有正确理解该解决方案?可能重复