在python模块(pypi)中包含DLL



我有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)

相关内容

  • 没有找到相关文章

最新更新