【发布时间】:2012-05-25 14:08:23
【问题描述】:
我查看了有关此主题的其他帖子,但我想知道是否有某种方法可以在不直接更改到库目录或显式指定绝对路径(例如通过 sys.path.append 或在 Windows 上使用 PATH 或 CLASSPATH 环境变量。我现在要做的是加载“jvm.dll”
【问题讨论】:
我查看了有关此主题的其他帖子,但我想知道是否有某种方法可以在不直接更改到库目录或显式指定绝对路径(例如通过 sys.path.append 或在 Windows 上使用 PATH 或 CLASSPATH 环境变量。我现在要做的是加载“jvm.dll”
【问题讨论】:
如果有问题的 DLL 没有任何依赖关系,则可以通过向 ctypes 工厂传递 DLL 的绝对路径来加载库(您可以根据需要确定)。但是,DLL 通常捆绑在一起并具有相互依赖关系。您最可靠的选择可能是将 DLL 的包含目录添加到 os.environ['PATH'] 以确保依赖的 DLL 可以由 OS 库加载器自动解析。请注意,如果您担心污染环境,您可以暂时执行此操作。
dll_dir = r'c:\foo\bar\path'
tmp = os.environ['PATH']
os.environ['PATH'] = dll_dir + ';' + tmp
ctypes.LoadLibrary( dll_name )
os.environ['PATH'] = tmp
【讨论】: