我有一个 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_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)
关于python - 在 python 模块 (pypi) 中包含 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57191483/