python - 在 python 模块 (pypi) 中包含 DLL

标签 python dll module pypi

我有一个 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/

相关文章:

c++ - 如何将 wxWidgets 库链接到任何基本的 wxWidgets 应用程序?

Python 模块和 __all__

python - Pandas:将自定义函数应用于组并将结果存储在每个组的新列中

python - 将 CSV 拆分为文件

python - 在 Python 中将数字格式化为货币

python - Python 中未找到 _mysql-module

module - 编译Ocaml游戏时未绑定(bind)模块事件错误

python - 如何在 Python 中高效计算两个高斯分布的热图?

c# - 如何将数据从非托管应用程序传递到 C# COM DLL

c# - 编译错误 : The type 'ASP.global_asax' exists in both DLLs