在python模块(pypi)中包含DLL

在python模块(pypi)中包含DLL,python,dll,module,pypi,Python,Dll,Module,Pypi,我有一个python模块,它将DLL中的函数包装在同一目录中,并使用ctypes加载库 __lib = cdll.LoadLibrary("deviceSys.dll") 以下是我的目录布局: deviceSys - wrapper.py - deviceSys.dll - __init__.py 我遵循软件包的指导原则,但我不确定一旦我的代码是PyPi上的模块,如何加载dll。例如,如果我使用ctypes加载库,它会产生一个错误,因为它正在本地搜索: O

我有一个python模块,它将DLL中的函数包装在同一目录中,并使用ctypes加载库

__lib = cdll.LoadLibrary("deviceSys.dll")
以下是我的目录布局:

deviceSys
      - wrapper.py
      - deviceSys.dll
      - __init__.py
我遵循软件包的指导原则,但我不确定一旦我的代码是PyPi上的模块,如何加载dll。例如,如果我使用ctypes加载库,它会产生一个错误,因为它正在本地搜索:
OSError:[WinError 126]找不到指定的模块


我需要以某种方式嵌入我的dll或在包的包含资源中搜索文件。有办法吗?

我想出来了。您需要将DLL添加到
setup.py
中的
package\u数据中:

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)