【python】库、包、模块之间的区别和联系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【python】库、包、模块之间的区别和联系相关的知识,希望对你有一定的参考价值。

参考技术A

划重点: 这三个概念(库、包、模块)实际上都是模块,只不过是个体和集合的区别。

一个模块就是一个.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块(.py文件)。

在模块之上的概念,为了方便管理而将 .py文件 进行打包。包目录下第一个文件便是 init .py(特点),然后是一些模块文件和子目录等。

库:具有相关功能模块的集合。这也是Python的一大特色之一,即具有强大的标准库、第三方库以及自定义模块。

python不同包之间调用时出现文件模块不存在的问题

python对于跨包调用函数时,经常会提示模块不存在的问题,主要是python程序执行时,搜索路径导致的,python程序执行的路径依次是:
(1)程序根目录
(2)环境变量
(3)标准库目标(D:\\Python27\\Lib  标准库是在lib文件下)
(4)第三方库的目录(D:\\Python27\\Lib\\site-packages  第三方库在site-packages文件下)
 
如下图所示,明明test1文件是存在的,但是跨包调用时,就出现test1不存在的问题,原因是当test2模块去调用test1中的模块时,会先去pack2目录下查找,pack2下没有要调用的模块和函数,所以很可能就停止了查找,弹出错误提示;
 

解决的办法是,可以把调用文件的主目录加到环境变量中
操作步骤:
import os
import sys

#步骤1:当前处于pack2d的test2文件目录,路径为dir1
dir1=os.path.dirname(__file__)
print \'当前文件目录:\',dir1

#步骤2:pack2的主目录是day6,路径为:dir2
dir2=os.path.dirname(os.path.dirname(__file__))
print \'当前文件的主目录:\',dir2

#步骤3:把day6目录加到环境变量中
sys.path.append(dir2)
for item in sys.path:
   print item

#步骤4:直接导入test1文件,然后再次调用test1里面的函数,不会再报错了
import test1
test1.testfun()

执行结果如下:

 

 test1中函数内容是:

 

 

 如果,上面的方法不管用的话,可以在file-setting-project-project Sources,把包放入到Sources中,就OK了,有时候第一种方法不管用,就用第二种,有时候第二种不管用,就用第一种

 

 

 

以上是关于【python】库、包、模块之间的区别和联系的主要内容,如果未能解决你的问题,请参考以下文章

python time 与datetime之间的区别与联系

python time 与datetime之间的区别与联系

沉浸式过Python基础(5-模块,包,库)

类、包、命名空间和模块之间有啥区别?

python-daemon 和多处理库之间的区别

python中的模块,库,包有啥区别