繁体   English   中英

从其他级别的包中导入

[英]import from packages in other levels

我有这个结构,我想从子模块导入submodule1 function,我该怎么做?

我尝试了以下结构:

project/
__init__.py
    api/
        __init__.py
        submodule.py
    app/
        __init__.py
        submodule1.py
        submodule2.py
  • 项目/__初始化__.py:
__all__ = ['convertor', 'settings']
from . import convertor
from . import settings

  • 项目/api/__初始化__.py:

我对您的整个文件结构感到困惑,但据我所知,您有一个项目文件夹,您的主脚本位于项目文件夹的一个文件夹中,而您的模块位于项目文件夹中的一个单独文件夹中。 如果是这种情况,我不明白为什么您不将main.py文件与包含模块的文件夹放在同一目录中(我只提到以防万一您可以这样做,因为它使这要容易得多)但是如果您确定需要文件结构与当前相同,则可以使用以下解决方案:

import sys
from os import path
from pathlib import Path

sys.path.insert(0, path.join(Path(__file__).parent.absolute().parent.absolute(), "app"))
import submodule1

本质上,这获取文件的路径,它的父级(它所在的文件夹),然后是父级的父级(项目文件夹)将其添加到sys.path (您可以使用此列表路径中的模块)。 我几乎 100% 确定有更好、更有效的方法来做到这一点,但由于问题的独特性,这是我的想法。 我希望它有点帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM