在 python 模块中包含一个 DLL (pypi)

Include a DLL in python module (pypi)

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