国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python中模塊查找的原理與方法詳解

2019-11-25 15:56:45
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

本文主要給大家介紹了關(guān)于python模塊查找的原理與方式,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō),來(lái)一起看看詳細(xì)的介紹:

基礎(chǔ)概念

module

模塊, 一個(gè) py 文件或以其他文件形式存在的可被導(dǎo)入的就是一個(gè)模塊

package

包,包含有 __init__ 文件的文件夾

relative path

相對(duì)路徑,相對(duì)于某個(gè)目錄的路徑

absolute path

絕對(duì)路徑,全路徑

路徑查找

python 解釋器查找被引入的包或模塊

Python 解釋器是如何查找包和模塊的

Python 執(zhí)行一個(gè) py 文件,無(wú)論執(zhí)行的方式是用絕對(duì)路徑還是相對(duì)路徑,interpreter 都會(huì)把文件所在的 directory 加入 sys.path 這個(gè) list 中,Python 就是在 sys.path 中查找包和模塊的,sys.path 中的內(nèi)容本身又是又 Python 的環(huán)境變量決定。

code-1

#test.pyimport osimport sysprint sys.path[0]# executepython test.pypython /Users/x/workspace/blog-code/p2016_05_28_python_path_find/test.py

執(zhí)行表明相對(duì)路徑和絕對(duì)路徑都輸出相同的結(jié)果,而且無(wú)論哪種執(zhí)行方式,test.py 所在的文件夾都會(huì)被加入 sys.path 的首位,也就是索引為0的位置。

Python 解釋器查找包的順序是什么

解釋器查找包,首先搜索 built-in module,其次搜索 sys.path ,這樣的查找順序?qū)?huì)導(dǎo)致同名包或模塊被遮蔽。

code-2

#ls├── os.py├── test2.py├── redis.py#test2.pyimport osfrom redis import Redis#execute test2.pyTraceback (most recent call last): File "/Users/x/workspace/blog-code/p2016_05_28_python_path_find/test2.py", line 1, in <module> from redis import RedisImportError: cannot import name Redis

由于 os 是 built-in module,即使在同目錄下有同名模塊,解釋器依然可以找到正確的 os 模塊,可以證實(shí) built-in module 不會(huì)被遮蔽,而 redis 屬于第三方模塊,默認(rèn)安裝位置是 Python 環(huán)境變量中的 site-packages,解釋器啟動(dòng)之后會(huì)將此目錄中的內(nèi)容加入 sys.path,由于當(dāng)前目錄會(huì)在 sys.path 的首位,當(dāng)前目錄的 redis 優(yōu)先被找到,site-packages 中的 redis 模塊被遮蔽了。

交互式執(zhí)行環(huán)境的查找順序

進(jìn)入交互式執(zhí)行環(huán)境,解釋器會(huì)自動(dòng)把當(dāng)前目錄加入 sys.path, 這時(shí)當(dāng)前目錄是以相對(duì)路徑的形式出現(xiàn)在 sys.path 中:

>>> import os.path>>> import sys>>> os.path.abspath(sys.path[0])'/Users/x/workspace/blog-code'>>>

除此之外,其他與執(zhí)行一個(gè)文件是相同的。

模塊中的 __file__ 變量

__file__ is the pathname of the file from which the module was loaded, if it was loaded from a file. 如果一個(gè)模塊是從文件加載的,__file__ 就是該模塊的路徑名

主站蜘蛛池模板: 沙田区| 临夏市| 荔浦县| 滨海县| 竹溪县| 宁阳县| 永和县| 古交市| 阳高县| 新化县| 土默特右旗| 罗田县| 明溪县| 方山县| 海宁市| 太谷县| 宾阳县| 迁安市| 正宁县| 晋中市| 阜康市| 晋州市| 大名县| 澜沧| 莎车县| 高台县| 民乐县| 阜宁县| 奇台县| 启东市| 香港 | 荆州市| 怀化市| 定远县| 卢氏县| 东乡| 吉木乃县| 斗六市| 页游| 陕西省| 金溪县|