如何获取当前的Python DLL?

时间:2013-07-29 17:28:04

标签: python dll python-3.x

我想通过ctypes加载当前的Python DLL。我可以像ctypes.windll.python33一样加载它,但这取决于当前版本。我知道sys.dllhandle中有它的句柄,但我不知道如何转换ctypes DLL对象中的句柄。

1 个答案:

答案 0 :(得分:1)

也许更好的ctypes.pythonapi?

来自ctypes/__init__.py

代码

if _os.name in ("nt", "ce"):
    pythonapi = PyDLL("python dll", None, _sys.dllhandle)
elif _sys.platform == "cygwin":
    pythonapi = PyDLL("libpython%d.%d.dll" % _sys.version_info[:2])
else:
    pythonapi = PyDLL(None)

如果要按句柄加载库:

hndl = sys.dllhandle
pythondll = ctypes.CDLL('python dll',  handle=hndl)

PyDLL和WinDll子类CDll并且_func_flags_属性不同。