Python中包的使用和包的导入问题

python中的包其实就是一个文件夹,只是这个文件夹下一定要有一个 __init__.py 文件夹,否则就是普通的文件夹,不能叫做包,如下图所示:

 上图中,notify 文件夹中含有 __init__.py 文件,所以, notify 文件夹属于一个包,而static文件中没有 __init__.py 文件,故 static 文件夹只是一个普通的文件夹。而我们平常说的导入一个包,其实就是在导入包里面的 __init__.py 文件,并不会导入包中的其他文件( import notify 不会导入 email.py、msn.py、qq.py、wechat.py 等,只会导入 __init__.py )。

如何使用包中的模块功能

如果我们想要用到 notify 包中的其他模块的功能(例如:email.py、msn.py、qq.py、wechat.py等模块的功能),就必须在 __init__.py 文件中导入其他模块,如下图所示:

 只有我们在 notify 包中的 __init__.py 文件内导入了包内其他的功能模块,导包的时候我们才能调用到 notify 包中其他模块的功能,如下:

 如上面两张图所示,我们在 notify 包中的 __init__.py 文件中导入了 email.py 模块,所以我们在start.py文件中通过 import notify 导入包,就可以直接使用到email.py模块中的功能。如果我们没有在 __init__.py 文件中导入该模块,那就会报错,如下面两张图所示:

 

 如上面的演示所示:我们只有在 notify 包下面的 __init.py 中导入了包内其他的模块,才能在包被当成模块导入的时候,调用到包中其他模块中的功能,否则就无法使用包内其他模块的功能

包的导入

上面的例子中,我们学会了如何使用包,那如果我们作为包的使用者来说。我们该将包下载下来后,该如何找到包呢?这就涉及到了 sys.path 环境变量,我们只有在执行文件所对应的 sys.path 环境变量中添加了包的路径,无论包在任意位置,都可以找到包,而不存在包的路径错误问题,如下:

这样,我们在执行文件的 sys.path 路径中添加了包的路径之后,就不用担心找不到包。

posted @ 2022-03-30 14:28  _yessir  阅读(276)  评论(0编辑  收藏  举报