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

首頁 > 編程 > Python > 正文

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

2020-02-16 02:03:08
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于python模塊查找的原理與方式,分享出來供大家參考學習,下面話不多說,來一起看看詳細的介紹:

基礎概念

module

模塊, 一個 py 文件或以其他文件形式存在的可被導入的就是一個模塊

package

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

relative path

相對路徑,相對于某個目錄的路徑

absolute path

絕對路徑,全路徑

路徑查找

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

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

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

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

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

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

解釋器查找包,首先搜索 built-in module,其次搜索 sys.path ,這樣的查找順序將會導致同名包或模塊被遮蔽。

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 模塊,可以證實 built-in module 不會被遮蔽,而 redis 屬于第三方模塊,默認安裝位置是 Python 環境變量中的 site-packages,解釋器啟動之后會將此目錄中的內容加入 sys.path,由于當前目錄會在 sys.path 的首位,當前目錄的 redis 優先被找到,site-packages 中的 redis 模塊被遮蔽了。

交互式執行環境的查找順序

進入交互式執行環境,解釋器會自動把當前目錄加入 sys.path, 這時當前目錄是以相對路徑的形式出現在 sys.path 中:

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

除此之外,其他與執行一個文件是相同的。

模塊中的 __file__ 變量

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杨浦区| 泽普县| 横峰县| 张北县| 莒南县| 靖西县| 南澳县| 观塘区| 开化县| 阳西县| 大厂| 通河县| 禹州市| 霸州市| 高碑店市| 海城市| 阿鲁科尔沁旗| 霍邱县| 富锦市| 北流市| 汉源县| 江陵县| 葵青区| 平湖市| 台东县| 南雄市| 蓬安县| 淮南市| 寿光市| 久治县| 五台县| 平湖市| 平遥县| 古交市| 五台县| 绵竹市| 秦皇岛市| 宜宾市| 米林县| 侯马市| 辽阳市|