📜  Python - 从兄弟目录导入

📅  最后修改于: 2022-05-13 01:54:53.044000             🧑  作者: Mango

Python - 从兄弟目录导入

在本文中,我们将讨论从Python的兄弟目录导入文件的方法。首先在一个根文件夹中创建两个文件夹,并在每个文件夹中创建一个Python文件。下面是字典树:

Directory Tree:

root :
 |
 |__SiblingA:
 |    \__A.py
 |     
 |__SiblingB:
 |      \__B.py

在 B.py 中我们将创建一个简单的函数,在 A.py 中我们将导入兄弟模块并调用在 B.py 中创建的函数。为了在 A.py 中导入兄弟模块,我们需要在 A.py 中指定父目录,这可以通过使用sys模块中的path.append()方法来完成。在 append() 方法中传递'..'将在 A.py 中追加父目录的路径

A.py 的代码:

Python3
# import requi9red module
import sys
  
# append the path of the
# parent directory
sys.path.append("..")
  
# import method from sibling
# module
from SiblingB.B import methodB
  
# call method
s = methodB()
print(s)


Python3
# defining method to import 
# in A.py which returns a string
def methodB():
    return "\n\nThis is methodB from SiblingB"


Python3
# import requi9red module
import sys
  
# append the path of the
# parent directory
sys.path.append("..")
  
# import method from sibling 
# module
from SiblingB import methodB
  
# call method
s = methodB()
print(s)


Python3
# from .fileName import methodName
from .B import methodB


Python3
# defining method to import in 
# A.py which returns this string
def methodB():
    return "\n\nThis is methodB from SiblingB"


B.py 的代码:



蟒蛇3

# defining method to import 
# in A.py which returns a string
def methodB():
    return "\n\nThis is methodB from SiblingB"

执行 A.py 后的输出:

执行 A.py 并调用 methodB()。

注意:我们不能直接从 A.py 导入 methodB 为“from ..SiblingB.B import methodB”,这将给出一个错误,指出 ImportError:尝试相对导入,没有已知的父包。这是因为如果 __init__.py 未在其中定义, Python不会将当前工作目录视为包。

另一种执行相同任务的类似方法是将 __init__.py 文件放在文件夹中,然后从同级目录中导入,从而将同级目录作为一个包。 __init__.py 可以用于将所需的方法导入其他模块。下面是字典树:

Directory Tree:

root :
 |
 |__SiblingA:
 |    \__A.py
 |     
 |__SiblingB:
 |      \_ __init__.py
 |      \__B.py
 |

A.py 的代码:

蟒蛇3



# import requi9red module
import sys
  
# append the path of the
# parent directory
sys.path.append("..")
  
# import method from sibling 
# module
from SiblingB import methodB
  
# call method
s = methodB()
print(s)

__init__.py 的代码:

蟒蛇3

# from .fileName import methodName
from .B import methodB

B.py 的代码:

蟒蛇3

# defining method to import in 
# A.py which returns this string
def methodB():
    return "\n\nThis is methodB from SiblingB"

执行 A.py 后的输出:

注意:一旦 __init__.py 被放置在一个文件夹中,这个文件夹现在作为Python的一个包。