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的一个包。