2016-08-22 95 views
2

我试图加载从Python中的DLL进行沟通,但得到WindowsError: [Error 126] The specified module could not be found.获取DLL与依赖

import ctypes 
my_dll = "C:/smt/toolbox/dlls/NMSim_Libraries.dll" 
nmsim = ctypes.cdll.LoadLibrary(my_dll) 

当我用Dependency Walker,它指出3依赖性丢失,所有这一切都是在路径: “C:\用户\ skeyel \应用程序数据\本地\连续\ Anaconda2 \ LIB \站点包\ numpy的\核心”

我尝试添加该路径到系统路径使用:

import sys 
sys.path.append("C:\\Users\\skeyel\\AppData\\Local\\Continuum\\Anaconda2\\Lib\\site-packages\\numpy\\core\\") 

但这并没有解决问题。如何让.dll与依赖关系进行通信?

注:

  1. 有我的电脑上两个Python安装:2.7.8与ArcGIS的和2.7.11与蟒蛇运运。在运行Anaconda安装附带的Spyder IDE时,它运行良好。

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

  3. 我检查和/或试图基于来自咨询各种各样的事情: WindowsError: [Error 126] The specified module could not be found

    3A。该dll的存在和dll的路径是正确的,因为它适用于一个版本,当我复制和粘贴完全相同的代码时。 DLL和Python都设置为32位(注意:操作系统是64位)。使用import platform后跟platform.architecture()将两个版本都设为32位。

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

    3d。我试过os.chdir()更改为.dll目录,然后仅通过名称加载dll,但没有路径信息。

    3e。我试图复制和粘贴上市丢失的依赖复制到同一文件夹中的.dll

  4. 我试图复制,粘贴,并从选择的答案在这里运行(最小修改)代码:Python | accessing dll using ctypes

这里是完整回溯:

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 

好像有一些简单的我失踪 - 任何人都知道它是什么?

非常感谢。

+0

请注意'sys.path。append'不会将作为参数给定的路径附加到环境变量__PATH__,而是附加到_Python_的模块搜索路径(__PYTHONPATH__)。尝试使用'os.environ [“PATH”],或者甚至更好,在启动解释器之前设置__PATH__变量。 – CristiFati

回答