IronPython 子模块导入

本文关键字:导入 模块 IronPython | 更新日期: 2023-09-27 17:55:36

我在IronPython模块导入处理方面有一个通用问题。

给定一个 Python 包,子模块可以通过相对引用相互引用。假设包称为 Poultry,其中的子模块 Chicken.py 和 Duck.py。然后,鸡可以简单地将鸭子作为"进口鸭"导入,反之亦然。应用程序加载的 Python 脚本可以正确导入包,可以使用子模块,一切正常。

包的目录结构如下所示:

+ - Poultry
| - __init__.py
| - Duck.py
L - Chicken.py

但是,例如,当我使用我的应用程序打开 Duck.py 时,我无法运行和调试它,因为 IronPython 在"导入鸡"行上抛出导入错误,并显示消息"没有模块名称鸡"。

我知道严格来说这不是IronPython的问题,而是托管应用程序的问题。最后的问题是,如何修改我的托管应用程序以正确处理这些导入语句?我应该在范围内设置一些路径变量,还是什么?我怎样才能让 Python 引擎理解当前加载的文件是特定包的一部分?

欢迎任何想法:-)

IronPython 子模块导入

您必须

始终将Duck作为其包的一部分导入。在应用程序内部,始终执行以下任一操作:

import Poultry.Duck
from Poultry import Duck

如果直接使用解释器运行它,则必须将-m开关用作

python -m Poultry.Duck

您仍然需要通过键入 from Poultry import Chicken 来导入鸡。你不能只做import Chicken.它与项目中的任何文件都相同。