Python 我得到了一个“答案”;DLL加载失败:找不到指定的模块;将Cython与Numpy程序一起使用时

Python 我得到了一个“答案”;DLL加载失败:找不到指定的模块;将Cython与Numpy程序一起使用时,python,cython,Python,Cython,我正试图用Numpy和Cython建立一个图书馆。虽然编译.pyx文件进展顺利,但我无法在测试文件中测试这些文件 它只是说,“第1行,在 导入blank_cy#该.pyd的名称 ImportError:DLL加载失败:找不到指定的模块 我已经试过研究其他类似的问题,但我仍然无法解决。另外,我不确定我需要什么信息,所以请询问。我将列出一些事情 .pyx文件将numpy导入为np,将math和cimports numpy导入为np 编译过程不会产生任何错误 我重命名了文件以匹配导入 如果没有进口,它

我正试图用Numpy和Cython建立一个图书馆。虽然编译.pyx文件进展顺利,但我无法在测试文件中测试这些文件

它只是说,“第1行,在 导入blank_cy#该.pyd的名称 ImportError:DLL加载失败:找不到指定的模块

我已经试过研究其他类似的问题,但我仍然无法解决。另外,我不确定我需要什么信息,所以请询问。我将列出一些事情

  • .pyx文件将numpy导入为np,将math和cimports numpy导入为np
  • 编译过程不会产生任何错误
  • 我重命名了文件以匹配导入
  • 如果没有进口,它可以正常工作
  • 非常感谢你

    这里有一个例子

    这将是test.pyx

    import numpy
    cimport numpy
    
    print("Hello World");
    
    setup.py文件:

    from setuptools import setup
    from Cython.Build import cythonize
    import numpy
    
    setup(ext_modules = cythonize("test.pyx"),include_dirs=[numpy.get_include()])
    
    要导入test.pyd的测试文件

    import test
    
    我重命名了文件以匹配导入

    别这样!这是你的问题

    当它导入名为
    my_module
    Python的扩展时,会查找名为
    PyInit\u my_module
    (Python 2的函数名稍有不同,或者如果模块名有非ascii字符,但基本思想相同)的函数作为模块初始化函数

    由于您重命名了模块,Cython创建的初始化函数的名称不再匹配,因此整个过程中断

    只需确保pyx文件具有最终要使用的模块名

    我重命名了文件以匹配导入

    别这样!这是你的问题

    当它导入名为
    my_module
    Python的扩展时,会查找名为
    PyInit\u my_module
    (Python 2的函数名稍有不同,或者如果模块名有非ascii字符,但基本思想相同)的函数作为模块初始化函数

    由于您重命名了模块,Cython创建的初始化函数的名称不再匹配,因此整个过程中断


    只需确保pyx文件具有最终要使用的模块名称。

    您需要创建一个,否则很难帮助。请参见您需要创建一个,否则很难帮助。请参见当我运行setup.py时,它会创建一个名为pizza_hut.cp38-win_amd64.pyd的文件。我删除了中间部分,所以不要这样做?如果我不这样做删除它,我有一个不同的问题。它告诉我不存在具有该名称的模块。(注意:我将名称更改为pizza_-hut以避免与本机测试模块混淆)。删除
    cp38-win_amd64
    不应停止模块导入工作(但是-删除它没有意义)。重命名第一位(
    pizza_-hut
    )会破坏导入。哦,我的意思是我同时更改了两个.pyx文件。因此,当我运行安装程序时,它会创建一个名为pizza_hut.py的文件。它会创建一个名为pizza_hut.cp38-win_amd64.pyd的文件。我删除了中间部分,所以不要这样做?如果我不删除它,我会遇到另一个问题。它告诉我没有具有该名称的模块。(注意:我将名称更改为pizza_-hut以避免与本机测试模块混淆)。删除
    cp38-win_amd64
    不应停止模块导入工作(但是-删除它没有意义)。重命名第一位(
    pizza_-hut
    )会破坏导入。哦,我的意思是我同时更改了这两个.pyx文件。因此,它创建了一个名为pizza_hut的文件