我是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 ),因为我的产品必须在名为 MyProduct.SDK 的名称下以Python导入:< / p>
import MyCoreBindings as SDK
因此,我希望用户的Python脚本能够像这样访问它:
import MyProduct.SDK
依赖顺序的文件摘要:
我还读到Python包的格式涉及一些模仿导入路径的目录结构,可能包含 setup.py 和 __ init __。py ,但我读过的所有材料都没有明确说明每个文件中必须包含的内容,以及在什么情况下需要它们。我绝对不清楚这个目录结构的位置。
答案 0 :(得分:2)
如果您希望Python能够导入您的模块,那么您有几个选择:
site-packages
文件夹中。 sys
模块修改路径(即sys.path.append(/ some / path))您使用setup.py
安装包裹和/或创建鸡蛋/轮子等。有关有用的提示,请参阅以下内容:
您可以在模块旁边的文件夹中使用_init__.py
创建包:
- MyProduct
- __init__.py
- MyCoreBindings.py
- _MyCoreBindings.pyd
_init__.py
文件可以为空。这基本上允许您将文件夹导入为MyProduct
:
import MyProduct
MyProduct.MyCoreBindings
或
from MyProduct import MyCoreBindings as SDK
如果您使用根文件夹中的MyProduct.py
,则不需要__init__.py
。我希望这一切都有道理。