我有python模块,它将DLL中的函数包装在同一目录中,并使用ctypes加载库。
__lib = cdll.LoadLibrary("deviceSys.dll")
这是我的目录布局:
deviceSys
- wrapper.py
- deviceSys.dll
- __init__.py
我正在遵循包指南,但是一旦我的代码是 PyPi 上的模块,我不确定如何加载 dll。例如,如果我使用 ctypes 加载库,它会产生错误,因为它在本地搜索: OSError: [WinError 126] The specified module could not be found
我需要以某种方式嵌入我的 dll 或在包的包含资源中搜索文件。有没有办法做到这一点?
我想通了。您需要将 DLL 添加到setup.py
中的package_data
:
include_package_data=True,
package_data={"devsys": ['deviceSystem.dll']},
要从 wrapper.py
中获取文件,请使用以下命令:
dir = os.path.dirname(sys.modules["devsys"].__file__)
path = os.path.join(dir, "deviceSystem.dll")
__lib = cdll.LoadLibrary(path)