gpt4 book ai didi

python-2.7 - 如何防止 ctypes.CDLL ("jvm.dll") 在 Windows Server 2016 上出现 "module not found"错误?

转载 作者:行者123 更新时间:2023-12-03 09:36:00 24 4
gpt4 key购买 nike

我们如何让 ctypes.CDLL("jvm.dll") 找不到 dll 并且不给出“找不到模块”错误?

我们已经验证了路径,并且可以通过 jvm.dll 的文件“打开”命令获取它们 - 但是当给 ctypes 时完全相同的路径会给出“找不到模块”错误。

我们还尝试将注册表项编辑为 per this answer .

我们还尝试使用 32 位版本的 Java 运行 32 位版本的 Python 以及尝试 64 位版本。

我们正在 Windows Server 2016 上使用 Python 2.7.14。

为什么这会失败,我们还能尝试什么?是否存在阻止 Python 脚本查看 DLL 的东西?

这里有更多背景:

我们试图让 ctypes 工作的原因是因为 jpype 失败并出现相同的错误 - 因此它们似乎与 Python 模块无法查看或访问 DLL 基本相关。

当我们运行以下命令时...

>> import ctypes
>> import os
>> os.chdir(r"C:\Program Files (x86)\Java\jre1.8.0_181\bin\client\")
>> ctypes.CDLL("jvm.dll")

...我们得到“找不到模块”。

然而,我们可以使用打开命令访问该文件。例如,这个调用在 Python 中工作(注意它也适用于上面使用的 x86 路径)以到达 jvm.dll:
>>> fo = open("C:\\Program Files\\Java\\jre1.8.0_181\\bin\\server\\jvm.dll")

但是即使路径指向同一个文件,通过 Jpype 的这个调用也会失败:
>>> import jpype
>>> jpype.startJVM("C:\\Program Files\\Java\\jre1.8.0_181\\bin\\server\\jvm.dll")

Jpype 给出以下错误:

File "C:\Python27\lib\site-packages\jpype_core.py", line 70, in startJVM _jpype.startup(jvm, tuple(args), True) RuntimeError: Unable to load DLL [C:\Program Files\Java\jre1.8.0_181\bin\server\jvm.dll], error = The specified module could not be found. at native\common\include\jp_platform_win32.h:58



我们使用 jpype 的原因是我们试图让 Jaydebeapi 工作以创建到数据库的 JDBC 连接。

我们如何启用 ctypes(可能是 jpype)来查找和使用 jvm.dll?

最佳答案

我们解决这个问题的答案是从使用 Python 2.7 解释器转向使用 Jython。

使用 Jython,我们能够使用 Jadebeapi 库并通过 JDBC 连接到数据库。

关于python-2.7 - 如何防止 ctypes.CDLL ("jvm.dll") 在 Windows Server 2016 上出现 "module not found"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51396696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com