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

2024-09-27 07:29:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

import MyCoreBindings as SDK

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

^{pr2}$

按依赖关系排序的文件摘要:

  • 程序文件\MyProduct\MyCore.dll
  • _MyCoreBindings.pyd公司
  • mycrebindings.py
  • 我的产品.py(我不确定我需要这个)

我还读过Python包的格式包含一些模仿导入路径的目录结构,以及可能包含的设置.py\uuu init_u.py,但我读过的所有材料都没有明确说明这些文件中必须包含哪些内容,以及在哪些情况下需要这些文件。我绝对不清楚这个目录结构可能放在哪里。在


Tags: 文件py目录脚本核心产品sdk公司
1条回答
网友
1楼 · 发布于 2024-09-27 07:29:52

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

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

您可以使用setup.py安装软件包和/或创建鸡蛋/轮子等。有关有用的提示,请参阅以下内容:

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

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

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

^{pr2}$

或者

from MyProduct import MyCoreBindings as SDK

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

相关问题 更多 >

    热门问题