最近學習python,匯入模組的時候遇到了一些問題,通過查詢資料解決。做一些必要的筆記,一來是對自己學習的知識的鞏固,二來對有同樣問題的人有參考作用
一 跨目錄呼叫模組
1、呼叫同級目錄下的模組
目錄結構:
– src
|– mod1.py
|– test1.py
若在程式test1.py
中匯入模組mod1
, 則直接使用:
import mod1
引入模組, 然後通過mod1.function_name()
呼叫方法;
或者通過from mod1 import function_name
引入方法,通過function_name()
呼叫方法。
2、呼叫子目錄下的模組
目錄結構如下:
– src
|– mod1.py
|– lib
| |– mod2.py
|– test1.py
這時,如果想在程式test1.py
中匯入模組mod2.py
,可以在lib件夾中建立空檔案__init__.py
檔案。
新的目錄結構如下:
– src
|– mod1.py
|– lib
| |–init.py
| |– mod2.py
|– test1.py
然後使用:
from lib import mod2
引入模組,然後通過mod2.function_name()
呼叫方法;
3、呼叫上級目錄下的模組
目錄結構如下:
– src
|– mod1.py
|– lib
| |– mod2.py
|– sub
| |– test2.py
這裡想要實現test2.py
呼叫mod1.py
和mod2.py
,做法是我們先跳到src目錄下面,然後在lib上當下建乙個空檔案__init__.py
,就可以像第二步呼叫子目錄下的模組一樣,通過import lib.mod2
進行呼叫了。具體**如下:
import sys
'..'
)from lib import mod2
然後就可以通過mod2.function_name()
的方式呼叫方法。
再來看我們這個栗子,test2.py
回到上一級就是src
這個目錄下,這樣就和lib是同一級目錄了,lib
下面已經建立了__init__.py
檔案,已經是個模組可以用來引入,這個時候from lib import mod2
就沒有問題可以順利呼叫啦。
4、通過絕對路徑匯入模組
比如,對於呼叫上級目錄下的模組:
import sys
'c:\\test\\src'
)import mod1
from lib import mod2
這裡想要實現test2.py
呼叫mod1.py
和mod2.py
,做法是我們先跳到src
目錄下面,直接可以呼叫mod1
,然後在lib
上當下建乙個空檔案__init__.py
,就可以像第二步呼叫子目錄下的模組一樣,通過from lib import mod2
進行呼叫了。
注意:sys.path新增目錄時注意是在windows還是在linux下,windows下需要 『\\』 否則會出錯。
二 補充說明
1、_init_.py
乙個包是乙個帶有特殊檔案__init__.py
的目錄。__init__.py
檔案定義了包的屬性和方法。其實它可以什麼也不定義;可以只是乙個空檔案,但是必須存在。如果__init__.py
不存在,這個目錄就僅僅是乙個目錄,而不是乙個包,它就不能被匯入或者包含其它的模組和巢狀包。
2、.pyc檔案
執行起來.pyc
和.py
是一樣的,.py
是直接以原始碼的形式進行呈現,而.pyc
只是位元組碼檔案。
三 總結
python在不同目錄下匯入模組的方法
Python模組 跨目錄 呼叫總結
系統模組呼叫 說到模組呼叫,大家應該都對import有個基本的了解,在專案裡面非常常見的比如import time,from selenium import webdriver等,我們經常在python中通過from import import 的語法可以引用一些系統模組,把系統模組引入後就可以呼叫...
0013跨目錄模組呼叫
在乙個目錄中呼叫模組和類 模組student的students類 class students def init self,name,city self.name name self.city city print my name is s and come from s name,city def...
python 模組引用 python如何引用模組
模組實際上就是 以.py為結尾的檔案 注意點 自定義的模組盡量不要和系統模組重名 模組內部封裝了很多實用的功能,有時在模組外部呼叫就需要將其匯入,匯入模組簡單劃分,實際上就只有兩種 import from import 詳細一點劃分有五種 1,improt 模組名 呼叫 模組名.功能名 2,impo...