下面为您详细讲解“Python3 导入上级目录中的模块实例”的完整攻略。
在Python中,想要从上级目录中导入模块实例,通常有以下几种方式:
方式一:使用sys.path.append()
在导入模块时,Python会按照一定的顺序搜索模块。其中,sys.path变量包含了Python搜索模块时所查找的路径。可以通过修改sys.path变量来实现从上级目录中导入模块。
例如,我们有如下的文件目录结构:
project/
app/
__init__.py
module1.py
run.py
现在,我们想在run.py文件中导入app目录下的module1模块。可以通过如下方式添加上级目录的路径:
# run.py
import sys
sys.path.append("..") # 添加上级目录的路径
from app.module1 import function1
这样,我们就可以在run.py文件中成功地从上级目录导入app目录下的module1模块了。
需要注意的是,加入sys.path变量中的路径要以操作系统相应的分隔符做为分隔符,具体可以使用Python内置的os模块的os.path.join()方法进行路径连接。
方式二:使用包的相对导入
可以利用Python3中新增的相对导入功能,从上级目录中导入模块。相对导入的语法格式如下:
from ..package import module
其中,..
表示上级目录,.
表示当前目录。如果要在package目录中导入module模块,则相对导入的代码为:
from .. import module
例如,在上面的例子中,可以这样导入module1模块:
# run.py
from ..app.module1 import function1
与方法一相比,相对导入更加简洁易懂,不会影响sys.path变量,也不需要手动添加上级目录的路径。
需要注意的是,相对导入只能在包中使用。如果在普通的.py文件中使用相对导入,可能会导致ImportError异常。此外,在Python2中,相对导入需要使用更复杂的语法,而且可能不太易懂。
至此,我们已经完成了“Python3 导入上级目录中的模块实例”的完整攻略。希望对您有所帮助。
下面给出两个示例说明:
示例一
my-project/
│
├─ package1/
│ ├─ __init__.py
│ ├─ module1.py
│
├─ package2/
│ ├─ __init__.py
│ ├─ module2.py
│
└─ main.py
假设现在我们需要在main.py
中使用module1.py
中定义的函数,则可以使用相对导入:
from package1 import module1
def main():
res = module1.function1()
print(res)
if __name__ == '__main__':
main()
示例二
my-project/
│
├─ package1/
│ ├─ __init__.py
│ ├─ module1.py
│
├─ package2/
│ ├─ __init__.py
│ ├─ module2.py
│
├─ sub/
│ ├─ __init__.py
│ ├─ main.py
│
└─ __init__.py
假设现在我们需要在main.py
中使用module2.py
中定义的函数,则可以使用相对导入:
from ..package2 import module2
def main():
res = module2.function2()
print(res)
if __name__ == '__main__':
main()
在这个例子中,需要使用两个点来表示上级目录。并且,sub
目录也需要添加__init__.py
文件作为一个包。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3 导入上级目录中的模块实例 - Python技术站