从并行目录导入模块

2024-05-14 16:13:02 发布

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

我正在运行Python3.8,并且在重组项目时遇到了一些关于import语句的问题。我仔细查看了一下,发现了一些变通方法,但我想知道是否遗漏了更简单的方法

以下是我的项目结构:

rootdir
  __init__.py
  main_script.py
  dirA
    __init__.py
    module1
  dirB
    __init__.py
    module2

我的主脚本调用module1

# main_script.py
from dirA import module1
module1.func1()

module1调用module2

# dirA/module1.py
from ..dirB import module2
def func1():
  module2.func2()

#--- output ---#
ValueError: attempted relative import beyond top-level package

我发现,如果在从main_script.py调用时使用from dirB import module2而不是from ..dirB import module2,它会工作。让我感到惊讶的是,Python文档(见下文)似乎说它应该以第一种方式工作。。。而且,似乎不可能直接运行module1,因为它会使import失败

在我的阅读材料中:

  • 使用setup.py文件和pip install -e .{a1}
  • Python docs关于包相对导入,这使它看起来应该非常容易。。。因此这里有一个问题,我是否遗漏了什么

Tags: 项目frompyimportinitmainscript语句

热门问题