Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 链接导入子模块的正确方法是什么?_Python_Python 3.x - Fatal编程技术网

Python 链接导入子模块的正确方法是什么?

Python 链接导入子模块的正确方法是什么?,python,python-3.x,Python,Python 3.x,假设我有一个具有以下结构的项目: ├── modules │   ├── modulea.py │   └── moduleb.py └── program.py program.py是主可执行文件,它像这样导入模块a from modules import modulea 在modulea中,我想从moduleb导入一些东西。现在,从逻辑上讲,我应该在同一个目录中执行导入模块b。但这将产生ModuleNotFoundError:没有名为'moduleb'的模块 所以为了让这个链式导入工作,

假设我有一个具有以下结构的项目:

├── modules
│   ├── modulea.py
│   └── moduleb.py
└── program.py
program.py是主可执行文件,它像这样导入模块a

from modules import modulea
在modulea中,我想从moduleb导入一些东西。现在,从逻辑上讲,我应该在同一个目录中执行导入模块b。但这将产生
ModuleNotFoundError:没有名为'moduleb'的模块

所以为了让这个链式导入工作,我必须从modules import moduleb执行
。这激怒了IDE,因为周围没有“modules”目录,或者从中没有
。导入模块B
,该模块会改变pylint

虽然上述两种方法都有效,但它们让人感到困惑和不和谐,因为人们假设导入将从上面的一个层次发生,而在似乎不必要的地方使用相对导入

有没有办法更优雅地处理这件事


谢谢。

您可以通过在
模块中创建
init\uuuuuuuuuupy
文件,使其成为python包

├── modules
│   ├── __init__.py
|   ├── modulea.py
│   └── moduleb.py
└── program.py

然后使用modules.moduleb在
modulea

中导入一些对象,您可以通过在其中创建
\uu init\uuuuuuuuuupy
文件将
模块制作成python包

├── modules
│   ├── __init__.py
|   ├── modulea.py
│   └── moduleb.py
└── program.py
然后使用模块中的
。模块B在
模块A
中导入一些对象