从嵌套结构导入函数

问题描述 投票:0回答:1

考虑这个目录结构:

a-a
   | b
      | c
          | print.py

基本上是a-a/b/c。和该目录中的 print.py 。 print.py 的内容如下所示:

def print_5():
  print("5")


def print_10():
  print("10")

我想在 a-a 级别将这些函数导入并使用到我当前的文件中。结构:

ls
a-a     test.py

我该怎么做?

在 test.py 中,我尝试将所有函数导入为:

from a-a.b.c import f

print_5()

它给出的错误为 SyntaxError: 我理解的无效语法。因此,我将“a-a”移至“a_a”,然后它开始出现 ModuleNotFoundError:没有名为“a_a”的模块。我知道这可能是一件微不足道的事情,只是对我来说不太合适。

python
1个回答
0
投票

假设

a-a
是根目录,您首先需要更新到
a_a
,就像您已经完成的那样。 Python 模块不能包含
-

您还应该在每个目录中添加一个

__init__.py
以将其标记为可以导入的包。您的目录结构应如下所示:

a_a/
├── __init__.py
├── b/
│   ├── __init__.py
│   ├── c/
│       ├── __init__.py
│       ├── print.py
└── test.py

您还需要确保a_a的父目录位于您的python路径中。您可以从父目录运行脚本或更新

PYTHONPATH
环境变量。

© www.soinside.com 2019 - 2024. All rights reserved.