模組其實就是乙個檔案,如果要執行檔案,首先就需要找到模組的路徑(某個資料夾)。如果模組的檔案路徑和執行檔案不在同乙個檔案目錄下,我們就需要指定模組的路徑。
模組的搜尋路徑指的就是在匯入模組時需要檢索的資料夾。
匯入模組時查詢模組的順序是:
import sys
print(f"sys.path: ")
'''['/users/mac/desktop/video/python/day16',
'/users/mac/desktop/video/python',
'''
強調:sys.path的第乙個值是當前執行檔案的所在的資料夾
如果我們在執行run.py檔案的時候,快速刪除mmm.py檔案,我們會發現檔案會繼續執行,而不會報錯,因為mmm已經被匯入記憶體當中。如果我們再一次執行run.py時會報錯,因為mmm.py已經被刪除了。
# mmm.py
def f1():
print('from mmm.py f1')
# run.py
import time
import mmm
time.sleep(10)
import mmm
mmm.f1() # from mmm.py f1
# time.py
print('from time.py')
# run.py
import time
print(time) #
如果mmm.py在/users/mac/desktop/video/python
路徑下,而執行檔案路徑為/users/mac/desktop/video/python/day16
,如果普通匯入一定會報錯,我們可以把/users/mac/desktop/video/python
新增到環境變數sys.path中,防止報錯。
# run.py
import sys
print(sys.path)
import mmm
mmm.f1()
二、搜尋路徑以執行檔案為準
假設我們有上述的目錄結構的檔案,檔案內**分別是:
# m1.py
import sys
print('模組m1中檢視的結果',sys.path)
# import m2
from dir1 import m2
m2.f2()
# m2.py
import sys
print(sys.path)
def f2():
print('from f2')
# run.py
import sys
print('執行檔案檢視的結果:',sys.path)
from dir1 import m1
其中run.py檔案的執行路徑是/users/mac/desktop/video/python/day16/模組搜尋路徑練習
,如果我們在m1.py中直接使用import m2
匯入m2會報錯,而使用from dir1 import m2
匯入m2則會成功,因為搜尋路徑以執行檔案為準,dir1和run.py是同目錄下的,因此run.py的環境變數能找到dir1;而m2和run.py不是同目錄下的,因此run.py的環境變數無法直接找到m2。 模組的使用,模組的搜尋路徑
模組的使用 1 什麼是模組 模組是一系列功能的集合體 常見的模組形式 自定義模組 第三方模組 內建模組 1 乙個module.py檔案就是乙個模組,檔名是module.py,而模組名是module 2 乙個包含有 init py檔案的資料夾也是模組 3 已被編譯為共享庫或dll的c或c 擴充套件 4...
python import模組的搜尋路徑
當在py 中import所依賴的模組時,python是從 找到這些模組呢,即模組的搜尋路徑是啥?預設情況下,python直譯器會搜尋當前目錄 所有已安裝的內建模組和第三方模組,搜尋路徑存放在sys模組的path變數中 import sys sys.path c windows system32 py...
python 模組搜尋路徑
當你匯入乙個模組,python 解析器對模組位置的搜尋順序是 1 當前目錄 2 如果不在當前目錄,python 則搜尋在 shell 變數 pythonpath 下的每個目錄。3 如果都找不到,python會檢視預設路徑。unix下,預設路徑一般為 usr local lib python 模組搜尋...