python - ImportError importing .pyd - DLL 加载失败。 Cython

标签 python numpy dll cython

我正在尝试对这段代码 (GDTest.pyx) 进行 Cythonize 处理:

cimport numpy as np
import numpy as np

DTYPE = np.float64
ctypedef np.float64_t DTYPE_t

# Generates a matrix of Dirichlet random variates of size K
# Argument alpha: J x K matrix of Dirichlet parameters
# Returns g: J x K matrix of J Dirichlet draws, each of dimension K 
# (each row sums to 1)
def GenerateDirich(np.ndarray alpha):
    assert alpha.dtype==np.float64
    cdef double fuzz = pow(10,-200)
    cdef np.ndarray g=np.zeros((alpha.shape[0],alpha.shape[1]), dtype=DTYPE)
    cdef np.ndarray gSum
    g[:,:] = np.maximum(np.random.gamma(alpha[:,:]),fuzz)
    gSum = np.sum(g,axis=1)
    gSum = gSum[:,np.newaxis]
    g = np.copy(g/(np.kron(np.ones((1,alpha.shape[1])),gSum)))
    g=np.copy(g/np.repeat(gSum,alpha.shape[1]).reshape((gSum.shape[0],alpha.shape[1])))
return g

这是我的setup.py:

from distutils.core import setup
from Cython.Build import cythonize
import numpy

setup(
    ext_modules=cythonize('GDTest.pyx'),
    include_dirs=[numpy.get_include()]
)

当我运行这条线时:

python setup.py -c mingw64 --inplace

我收到一堆警告(已弃用的 numpy API,以及一些与 _Pyx_RaiseTooManyValuesError 相关的警告),但随后它创建了 GDTest.pyd。当我尝试导入它时,出现错误:

ImportError:DLL Load Failed: A dynamic link library (DLL) initialization routine failed.

我运行了 dependency walker,这是它所缺少的:

API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL

API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL

API-MS-WIN-SERVICE-PRIVATE-L1-1-1.DLL

MSVCR90.DLL

API-MS-WIN-CORE-SHUTDOWN-L1-1-1.DLL

EXT-MS-WIN-NTUSER-UICONTEXT-EXT-L1-1-0.DLL

IESHIMS.DLL

奇怪的是,如果我尝试第二次导入它(import GDTest),它会起作用。关于如何解决此问题的任何想法?

谢谢!

最佳答案

我通过完全卸载 canopy 解决了我的问题。然后,我安装了 32 位版本的 anaconda 和 MS visual studio 2008 express edition。现在可以了。万岁!

关于python - ImportError importing .pyd - DLL 加载失败。 Cython,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29680312/

相关文章:

c++ - 静态链接 SHFolder 组件

python - PIL - 在图像上绘制多行文本

python - 如何在 Pandas 数据框中设置时间戳的偏移量?

python - 如何使用 numpy 在数组中使用 mod

java.lang.UnsatisfiedLinkError no *****.dll in java.library.path

c# - Interop.xxxxx.dll 是如何生成的?

python - PyUSB:没有可用的后端

python - 这个 import_umath 函数是什么?

python - 创建numpy数组问题(无法将输入数组从形状(2)广播到形状(1))

python - opencv inRange像素位置