Python:2级兄弟导入

时间:2014-06-02 11:51:12

标签: python import project-structure

给出以下文件结构(示例)

library_project\
 |- __init__.py
 |
 |--- utils_a\
 |     |- __init__.py
 |     |- util_functions_a.py
 |
 |--- utils_b\
 |     |- __init__.py
 |     |
 |     |--- utils_b_1\
 |     |     |- __init__.py
 |     |     |- util_function_b1.py
 |     |
 |     |--- utils_b_2\
 |     |     |- __init__.py
 |     |     |- util_function_b2.py

和第二个项目

other_project\
 |- __init__.py
 |- run.py

在run.py

from library_project.utils_b.util_function_b2 import do_something
do_something()

util_function_b2.py如何使用util_functions_a.py中的函数?

我发现的相关导入的所有示例都假设导入的包是兄弟包(例如https://docs.python.org/2/tutorial/modules.html#intra-package-references)而不是2级

2 个答案:

答案 0 :(得分:1)

import statement允许您使用任意数量的.点来引用树上的包。

  • .指的是同一个包; utils_b_2
  • ..指的是同一个共享父包utils_b
  • ...指的是library_project

util_function_b2,您可以参考util_functions_a 3点:

from ...utils_a.util_functions_a import somename

答案 1 :(得分:-1)

根据目录结构,导入" util_function_b2.py"

from library_project.urils_b.utils_b_2.until_function_b2 import *

util_function_b2.py如何使用util_functions_a.py -

中的函数

您可以将项目添加到python路径。

sys.path.append('/path/to/library_project/')

然后,

from  from library_project.utils_a imoprt *

或者有一种方法可以使用"。"

进行相对寻址