我是Python世界的新手,现在我发现自己正在努力学习如何正确地创buildPython包或模块。 我也有几个必须满足的要求。
我有一个核心原生DLL(我们将其命名为MyCore.dll )从C ++编译。 此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
依赖项顺序的文件摘要:
我也读过,Python包的格式包含一些模仿导入path的目录结构,并且可能包含了setup.py和__init__.py ,但是我读过的所有材料都没有明确说明必须要做什么每个这些文件,以及在什么情况下,他们是必需的。 我当然不清楚这个目录结构可以放在哪里。
如果你想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
如果您使用根文件夹中的__init__.py
,则不需要MyProduct.py
。 我希望一切都有道理。