python的package import 以及相对导入和绝对导入

python的package import 以及相对导入和绝对导入


原创  2016年05月27日 16:26:08

1、首先基本的概念可以参考书或者百度,我这里是给出实践说明,同时提供源码说明;

2、要注意:如果要将一个文件夹目录当做package的话,必须要在该目录下加一个__init__.py的文件(注意是两个下划线连在一起__),否则将无法作为一个package;

3、程序的目录结构如下:


3、谨记:执行应用程序的模块,不能使用相对导入;比如a.py,打算执行该文件,那么该文件文件名就会变成__main__,若使用相对导入 也就是from .* 这种形式,就会出错;因为当前的模块名改变后,解释器认为相对路径失效;

4、注意该工程是在testPythonPackageImport的目录下打开的;

5、当我们执行test21.py文件的时候,文件中打印出了sys.path,我们可以观察到包含了路径 xxx/testPythonPackageImport 和 xxx/testPythonPackageImport/top/test2

前者的出现原因应该是pycharm这个IDE自动帮我们把项目的目录加进去了,后者的出现是因为是在该目录下执行了test21.py文件;

如果要增加搜索路径的话,可以在当前的已有的某个路径下,添加后缀为.pth的文件,在文件中加入需要搜索的路径,python就会自动加入了;

6、关于执行out,说明相对导入产生的错误:

out.py中导入模块有两种方式,一种是绝对导入:import top.test1.test11 as test11

一种是相对导入:from .top.test1 import test11

应该说这两种都是正确的,但是当我们要直接执行out.py的时候,相对导入就会发生错误,所以前面3中说了,要执行该文件,必须使用绝对导入;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值