干货探寻Python导包路径机制快快

为什么我们importos,improtsys,improtmath等模块,就可以成功导入其模块,而随便importaaa,就不行呢。那是因为Python的导包路径原因,让我们一起探寻Python的导包路径,是怎样的机制。

查看导包路径

我们可以通过内置sys模块来查看导包路径。

sys.path返回的是一个路径列表,其代表Python导包时搜索的路径。

Python解释器从sys.path里依次查找要导入的模块文件或包表示当前路径sys.path列表中的路径的先后顺序代表了Python解释器在搜索模块时的先后顺序内置模块、包存放路径

一些内置模块、包,如os、ys、json等都存放在你下载时,其保存路径的在Lib目录下。

下载的第三方库存放路径

像requests、ipython这些自己下载的第三方库等都存放在Lib下的site-packages目录下。

然而导包路径sys.path就包含这两个路径,因此我们使用importos、importsys、importjson、importrequests等都可以找到相应的模块和包。如果导入模块和包时在sys.path中没有搜索到相对应的模块,则会报错误。

其原理跟我们的电脑的环境变量-Path有点像。我们可以在cmd窗口输入python可以打开python交互解释器,pipinstallxxx可以下载第三方库。

追加新的导包路径

为了解决以上的难题,我们可以在程序运行时动态追加新的导包路径。追加好后,在你设置的目录路径,就有一个aaa.py模块。追加导包路径之后就可以成功导入并使用了。

Django项目追加导包路径

再来看看导包路径的具体应用场景。

在Django中我们通常把子应用模块统一放在apps包下,但在注册子应用的时候,该如何设置路径呢?

我们在配置文件settings.pyordevelop.py中添加打印导包路径的代码,其中pprint是prettyprint美化输出的意思,这样输出的列表不会在一行上。然后运行Django程序查看导包路径结果,知道导包路径我们就好在配置文件settings.pyordevelop.py中注册子应用。

注册子应用直接写应用名就可以了。

导包路径的作用

通过查看导包路径,可以快速的知道项目中各个包该如何的导入。

接手项目时,可以尽快的适应项目导包的方式。

通过追加导包路径,可以简化某些目录复杂的导包方式。




转载请注明:http://www.aierlanlan.com/tzrz/3252.html