gpt4 book ai didi

python - 构建引用 .PYD 的 Python 包/模块的正确方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 10:21:27 29 4
gpt4 key购买 nike

我是 Python 世界的新手,现在我发现自己正在尝试学习如何正确创建 Python 包或模块。我还有几个必须满足的要求。

我有一个从 C++ 编译的核心 native DLL(我们将其命名为 MyCore.dll)。此 DLL 必须部署到特定的安装位置,因为它是产品的核心组件(我们会说 ProgramFiles\MyProduct)。

我已使用 SWIG 为 MyCore.dll 生成 Python 绑定(bind)。它生成了 2 个文件:_MyCoreBindings.pyd(本质上是一个引用 MyCore.dll 的 DLL)和 MyCoreBindings.py(加载 _MyCoreBindings.pyd 并为其提供 Python API)。

最后,我有一个仅包含导入的 Python 脚本 (MyProduct.py),因为我的产品必须以名称 MyProduct.SDK 在 Python 中导入:

import MyCoreBindings as SDK

因此,我希望用户的 Python 脚本能够像这样访问它:

import MyProduct.SDK

按依赖顺序排列的文件摘要:

  • ProgramFiles\MyProduct\MyCore.dll
  • _MyCoreBindings.pyd
  • MyCoreBindings.py
  • MyProduct.py(我不确定我需要这个)

我还读到 Python 包的格式涉及一些模仿导入路径的目录结构,并且可能包含 setup.py__init__.py ,但是我读过的所有 Material 都没有说清楚每个文件中必须包含什么,以及在什么情况下需要它们。我绝对不清楚这个目录结构可能放在哪里。

最佳答案

如果您希望 Python 能够导入您的模块,那么您有几个选择:

  • 将模块安装到 Python 的 site-packages 文件夹。
  • 修改 Python 搜索要导入的模块/包的路径。您可以通过 *.pth 文件或使用 Python 的 sys 模块(即 sys.path.append(/some/path) )修改路径

您使用 setup.py 来安装您的包和/或创建 eggs/wheels 等。请参阅以下内容以获得有用的提示:

您可以在模块旁边的文件夹中使用 _init__.py 创建一个包:

- MyProduct
- __init__.py
- MyCoreBindings.py
- _MyCoreBindings.pyd

_init__.py 文件可以为空。这基本上允许您将文件夹导入为 MyProduct:

import MyProduct

MyProduct.MyCoreBindings

from MyProduct import MyCoreBindings as SDK

如果使用根文件夹中的 __init__.py,则不需要 MyProduct.py。我希望一切都有意义。

关于python - 构建引用 .PYD 的 Python 包/模块的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28073784/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com