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

首頁 > 編程 > Python > 正文

Python模塊搜索路徑代碼詳解

2020-02-22 23:02:19
字體:
供稿:網(wǎng)友

簡述

由于某些原因,在使用 import 時,Python 找不到相應(yīng)的模塊。這時,解釋器就會發(fā)牢騷 - ImportError。

那么,Python 如何知道在哪里搜索模塊的路徑呢?

模塊搜索路徑

當導(dǎo)入名為 hello 的模塊時,解釋器首先搜索具有該名稱的內(nèi)置模塊。如果沒有找到,將在變量 sys.path 給出的目錄列表中搜索名為 hello.py 的文件。

sys.path 從這些位置初始化:

包含輸入腳本的目錄(或當前目錄,當沒有指定文件時)
PYTHONPATH(目錄名列表,與 shell 變量 PATH 語法相同)
與安裝相關(guān)的默認值

>>> import sys>>> sys.path['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5', '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/site-packages']

注意: '' 表示當前目錄(當前腳本所在的路徑)

例如,在 /home/wang/workspace 中創(chuàng)建一個名為 hello.py 的模塊,內(nèi)容如下:

print('Hello')

然后,試圖加載該模塊:

>>> import os>>> >>> os.getcwd() # 獲取當前目錄'/home/wang'>>> >>> import hello.py...ImportError: No module named 'hello'

很遺憾,由于 sys.path 中沒有包含 /home/wang/workspace 這個路徑,所以找不到 hello 模塊,從而引發(fā) ImportError。

添加模塊搜索路徑

為了解決上述問題,需要添加模塊搜索路徑,可以使用以下幾種方式:

1.動態(tài)增加路徑

臨時生效,對于不經(jīng)常使用的模塊,這通常是最好的方式,因為不必用所有次要模塊的路徑來污染 PYTHONPATH。

2.修改 PYTHONPATH 變量

永久生效,對于在許多程序中都使用的模塊,可以采用這種方式。這將改變所有 Python 應(yīng)用的搜索路徑,因為啟動 Python 時,它會讀取這個變量,甚至不同版本的 Python 都會受影響。

3.增加 .pth 文件

永久生效,這是最簡單的、也是推薦的方式。Python 在遍歷已知的庫文件目錄過程中,如果遇到 .pth 文件,便會將其中的路徑加入到 sys.path 中,于是 .pth 中所指定的路徑就可以被 Python 運行環(huán)境找到了。

動態(tài)增加路徑

通過 sys 模塊的 append() 方法在 Python 環(huán)境中增加搜索路徑:

>>> import sys>>> sys.path.append('/home/wang/workspace')

現(xiàn)在,查看搜索路徑:

>>> sys.path['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5', '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/site-packages', '/home/wang/workspace']>>> >>> import helloHello

可以看到,路徑被成功添加進去了,再次執(zhí)行導(dǎo)入可以正常使用。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 浮山县| 绥棱县| 大竹县| 夏邑县| 嘉鱼县| 莱芜市| 荣昌县| 泗水县| 贵州省| 探索| 遂昌县| 金阳县| 潮安县| 临安市| 界首市| 大港区| 阿克陶县| 丰镇市| 肃宁县| 五家渠市| 伊吾县| 沾益县| 西丰县| 共和县| 犍为县| 东台市| 洛南县| 嘉善县| 东方市| 鄯善县| 肃北| 城市| 龙陵县| 双牌县| 化州市| 海伦市| 米易县| 英吉沙县| 随州市| 清流县| 榆林市|