Python 获取DLL以与依赖项通信

Python 获取DLL以与依赖项通信,python,dll,Python,Dll,我试图从Python加载DLL,但找不到指定的模块。WindowsError:[Error 126] import ctypes my_dll = "C:/smt/toolbox/dlls/NMSim_Libraries.dll" nmsim = ctypes.cdll.LoadLibrary(my_dll) 当我使用时,它表示缺少3个依赖项,所有这些依赖项都在路径中: “C:\Users\skeyel\AppData\Local\Continuum\Anaconda2\Lib\site pa

我试图从Python加载DLL,但找不到指定的模块。WindowsError:[Error 126]

import ctypes
my_dll = "C:/smt/toolbox/dlls/NMSim_Libraries.dll"
nmsim = ctypes.cdll.LoadLibrary(my_dll)
当我使用时,它表示缺少3个依赖项,所有这些依赖项都在路径中: “C:\Users\skeyel\AppData\Local\Continuum\Anaconda2\Lib\site packages\numpy\core”

我尝试使用以下方法将此路径添加到系统路径:

import sys
sys.path.append("C:\\Users\\skeyel\\AppData\\Local\\Continuum\\Anaconda2\\Lib\\site-packages\\numpy\\core\\")
但这并没有解决问题。如何使.dll与依赖项通信

注:

  • 我的计算机上有两个Python安装:ArcGIS附带的2.7.8和Anaconda附带的2.7.11。它在运行Anaconda安装附带的Spyder IDE时运行良好

  • 它在我的笔记本电脑上运行良好(2.7.8和2.7.11)

  • 我根据以下人员的建议检查和/或尝试了各种方法:

    3a。dll存在并且指向dll的路径正确,因为当我复制和粘贴完全相同的代码时,它只适用于一个版本

    3b。DLL和Python都设置为32位(注意:操作系统为64位)。使用
    import platform
    后跟
    platform.architecture()
    将两个版本都设置为32位

    3c。我已尝试调整
    sys.path
    以包括两个安装之间的相同路径

    3d。我已尝试
    os.chdir()
    更改为.dll目录,然后只按名称加载dll,而不包含路径信息

    3e。我已尝试将列出的缺少的依赖项复制并粘贴到与.dll相同的文件夹中

  • 我尝试复制、粘贴并运行(最小修改)此处所选答案中的代码:

  • 以下是完整的回溯:

    Runtime error 
    Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "C:\Users\skeyel\AppData\Local\Continuum\Anaconda2\Lib\ctypes\__init__.py", line 443, in LoadLibrary
        return self._dlltype(name)
    File "C:\Users\skeyel\AppData\Local\Continuum\Anaconda2\Lib\ctypes\__init__.py", line 365, in __init__
        self._handle = _dlopen(self._name, mode)
    WindowsError: [Error 126] The specified module could not be found
    
    运行时错误
    回溯(最近一次呼叫最后一次):
    文件“”,第1行,在
    LoadLibrary中第443行的文件“C:\Users\skeyel\AppData\Local\Continuum\Anaconda2\Lib\ctypes\\uuuuu init\uuuu.py”
    返回自我类型(名称)
    文件“C:\Users\skeyel\AppData\Local\Continuum\Anaconda2\Lib\ctypes\\ uuuuu init\uuuuu.py”,第365行,在u init中__
    self.\u handle=\u dlopen(self.\u名称,模式)
    WindowsError:[错误126]找不到指定的模块
    
    似乎有一件简单的事情我错过了——有人知道它是什么吗


    非常感谢。

    重新安装Anaconda解决了问题


    我仍然不知道具体的问题是什么。

    请注意,
    sys.path.append
    没有将作为参数提供的路径附加到环境变量path,而是附加到Python的模块搜索路径(PYTHONPATH)。尝试使用
    os.environ[“PATH”]
    ,或者更好的做法是,在启动解释器之前设置PATH变量。