【发布时间】:2015-01-21 17:59:00
【问题描述】:
我是 Python 世界的新手,现在我发现自己正在尝试学习如何正确创建 Python 包或模块。我还有几个必须满足的要求。
我有一个从 C++ 编译的核心原生 DLL(我们将其命名为 MyCore.dll)。该 DLL 必须部署到特定的安装位置,因为它是产品的核心组件(我们会说 ProgramFiles\MyProduct)。
我使用 SWIG 为 MyCore.dll 生成 Python 绑定。它生成了 2 个文件:_MyCoreBindings.pyd(本质上是一个引用 MyCore.dll 的 DLL)和 MyCoreBindings.py(加载 _MyCoreBindings.pyd 并为其提供 Python API)。
最后,我有一个仅包含导入的 Python 脚本 (MyProduct.py),因为我的产品必须在 Python 中以 MyProduct.SDK 的名称导入:
import MyCoreBindings as SDK
因此,我希望用户的 Python 脚本能够像这样访问它:
import MyProduct.SDK
按依赖顺序排列的文件摘要:
- ProgramFiles\MyProduct\MyCore.dll
- _MyCoreBindings.pyd
- MyCoreBindings.py
- MyProduct.py(我不确定我是否需要这个)
我还了解到 Python 包的格式涉及一些模仿导入路径的目录结构,并且可能包含 setup.py 和 __init__.py ,但是我读过的所有材料都没有明确说明每个文件中必须包含哪些内容,以及在什么情况下需要它们。我绝对不清楚这个目录结构可能放在哪里。
【问题讨论】: