一、概念介绍
在介绍目录directory与包package的区别之前,先理解一个概念—模块
模块的定义:本质就是以.py结尾的python文件,模块的目的是为了其他程序进行引用。
目录(Dictionary):
Dictionary在pycharm中就是一个文件夹,放置资源文件,对应于在进行JavaWeb开发时用于放置css/js文件的目录,或者说在进行物体识别时,用来存储背景图像的文件夹。该文件夹其中并不包含_ _ init__.py文件
包(Package):
对于Python package 文件夹而言,与Dictionary不同之处在于其会自动创建__init__.py文件。
简单的说,python package就是一个目录,其中包括一组模块和一个__init__.py文件。
二、导入模块
导入模块的方法:
1.同级目录下模块的导入
import module_name # 把模块下面的所有内容都导入进来了
import module1_name,module2_name
from module_name import * # 一般import * 不建议使用
from module_name import m1,m2,m3 # m1为module_name下面的方法或变量
from module_name import logger as logger_a # 为导入的变量或方法取个别名,引用时直接用别名
2.不同级目录下模块的导入:
import 目录名.模块名 #使用目录名.模块名的方式,其它的与同目录一样。这里的目录是Directory和python package都一样。
3.示例
main.py中导入day51目录下面para_day51.py
import day51.para_day51
day51.para_day51.show_para()
三、导入包
因此我们这里再来看文章开头的提示就不难理解了!common是个Python package包。导入这个包是在__init__.py查找他的属性和方法。但是我们的__init__.py为空。没有get_driver模块的信息。所以会提示有问题。
解决办法:在__init__.py文件中写入get_driver模块的信息
可以看到没有提示告警信息,并且可以通过
同时,可以看到__init__.py文件下的print语句被执行啦。再一次
问题:有小伙伴就要问了,虽然我这个下面提示了。但是执行为什么还是成功了呢?
前面我们说过包其它就是一个目录。看下面导入目录
四、导入目录
意思就是,引入了这个目录,然后我们使用模块时,就在目录里面找。
无法通过
总结区别
把模块在__init__.py文件里配置好。导包时就可以通过 . 来快捷导包