python模块导入规则(相对导入和绝对导入)

  python模块可以相对导入和绝对导入,但这两者是不能替换使用的。本文主要讨论工作目录下模块之间的导入规则。其中相对导入前面有一个'.',表示从该脚本所在目录开始索引,而绝对导入前面没有'.',表示从根目录开始索引。首先明确一点,python认为的根目录为当前运行的脚本所在的目录,而不是vscode打开的工作目录的根目录。则基于python运行时的根目录,python模块导入主要依据以下三个规则:

  1、对于需要通过根目录的导入路径,必须使用绝对路径,否则出错。

  2、对于根目录以下子目录模块之间的导入,此时没有通过根目录,则必须使用相对路径,否则出错。

  3、无法导入根目录的父目录及以上目录中的模块。

  比如,vscode打开如下名为import_test的目录:

d1
--__init__.py
--d1p1.py
--d1p2.py
--d11
----__init__.py
----d11p1.py
----d11p2.py
d2
--__init__.py
--d2p1.py
--d21
----__init__.py
----d21p1.py
main.py

  当运行main.py时,此时根目录为import_test

  1、如果main.py需要导入d1p1.py中的模块,则必须使用绝对导入。

  2、如果d1p1.py需要导入d11p1.py中的模块,则必须使用相对导入。

  3、如果d1p1.py需要导入d2p1.py中的模块,则必须使用绝对导入。

  当运行时d1p1.py时,此时根目录为d1

  1、如果d1p1.py需要导入p11p1.py中的模块,则必须使用绝对导入。

  2、如果d11p1.py需要导入d11p2.py中的模块,则必须使用相对导入。

  3、如果d11p1.py需要导入d1p2.py中的模块,则必须使用绝对导入。

  4、d1p1.py无法导入d2目录下和main.py中的模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值