回覆列表
  • 1 # 使用者5253322899700

    在 python 中,如果當前目錄中存在有 __init__.py 檔案,則表示該目錄為一個包(package),在包中,引用同級目錄或子目錄中的其它模組非常簡單,直接使用 import 語句即可,並且如果是同級目錄,沒有 __init__.py 檔案亦可。但如何匯入父目錄中的其它模組呢,在 python 的世界裡,沒有像 C 中直接使用 ../ 來退級的方式,像 import ../test 這樣的語句是不合法的。其它,如果理工清楚了 import 語句的工作原理,就好辦了,import 工作時,就是根據模組名,從 sys.path 所包含的路徑中尋找對應的模組名,如果能找到,則將其它匯入到當前執行環境,根據這個規則,有如下兩種方式解決上述問題:

    1、修改 sys.path 法:在匯入父目錄中的模組前,先修改 sys.path 的值,如匯入父目錄中的 test 模組,匯入方法如下:import syssys.path.insert(0, "..") ;# or?? sys.path.append("..")

    2、將包的根目錄以外鏈的形式加入到 sys.path 中,即在 {PYTHON-HOME}\lib\site-packages 中新建一個 .pth 檔案,檔案內容為包根路徑,假設包的根目錄為 d:/py/mytest/,則可以在 {PYTHON-HOME}\lib\site-packages 目錄下建一個 mytest.pth 的檔案,內容為 d:/py/mytest。完成上述步驟後,則可以在任何模組中像匯入已安裝的系統包一樣匯入 mytest 包或是該包下的所有模組,如 import mytest。注意,由於 python 的版本不同,在 v2.5 版以後,需要在 __init__.py 檔案中顯示地使用 __all__ 變數指明當前包下有哪些模組,要不此包是無法正常匯入和工作地

  • 中秋節和大豐收的關聯?
  • 電視劇大江大河39集介紹?