python新增模組搜尋路徑和包的匯入
方法一:函式新增
1 import sys
2 檢視sys.path
3 新增sys.path.append("c:\\")
方法二:修改環境變數
w使用者可以修改系統環境變數PYTHONPATH
方法三:增加.pth檔案,推薦!
在site-packages新增一個路徑檔案,如mypkpath.pth,必須以.pth為字尾,寫上你要加入的模組檔案所在的目錄名稱就是了。
1 windows
c:\python27\site-packages
# 我們的學員把pth檔案直接放在c:\python27
# (或其他python安裝目錄)目錄下測試也是有效的
# 2015.9.23
2 linux(ubuntu)
/usr/local/lib/python2.7/dist-packages (note by shanql, 我是放在這個目錄下有效的,所新增的目錄一定要存在,不存在則會不成功)
2 linux(redhat)
/usr/lib/python2.7/site-packages
包的呼叫
為了避免模組名衝突,Python又引入了按目錄來組織模組的方法,稱為包(Package)。
每一個包目錄下面都會有一個__init__.py
的檔案,這個檔案是必須存在的,否則,Python就把這個目錄當成普通目錄(資料夾),而不是一個包。__init__.py
可以是空檔案,也可以有Python程式碼,因為__init__.py
跨包呼叫(當前目錄下有modulepack1包):
1 from modulepack1[.modulepack2] import module
如果當前目錄下能夠找到要呼叫的包,可以直接from包import模組,如果當前目錄找不到要呼叫的包,需要向sys.path新增包的所在絕對路徑。
import一個包名,就等於執行了這個包下的__init__檔案。
示例:
在nod1裡import hello是找不到的,需要手動新增包路徑,如果找到那是因為pycharm給加了不必要的路徑,以命令列執行為準。
1 import sys,os
2 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #__file__獲取執行檔案相對路徑,整行為取上一級的上一級目錄
3 sys.path.append(BASE_DIR) #新增路徑
4 import hello
5 hello.hello1()
模組呼叫測試
1 if __name__=='__main__': #__name__方法判斷
2 print('ok')
在一個py模組直接執行print(__name__)會輸出__main__,表示當前這個檔案屬於執行檔案,如果從其他的py模組中匯入一個py模組,執行被匯入的py模組中的print(__name__)會輸出被匯入的模組的模組名稱,那麼if判斷就不會成功,所以匯入的時候不會執行判斷內的程式碼。
主要用在除錯功能,即一個模組被呼叫的時候不執行內容,而自己除錯模組的時候可以順利的執行模組內容。