1. 程式人生 > >python新增模組搜尋路徑和包的匯入

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

本身就是一個模組,而它的模組名就是對應包的名字。呼叫包就是執行包下的__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判斷就不會成功,所以匯入的時候不會執行判斷內的程式碼。

主要用在除錯功能,即一個模組被呼叫的時候不執行內容,而自己除錯模組的時候可以順利的執行模組內容。