python module import(自定義module如何導入)

part1 主程序與待導入模塊在統一目錄下

下面的介紹的前提
1、新建cc.py
2、假設已經存在aa.py,且cc.py與aa.py在同級目錄下
3、假設aa中有函數bb
4、想在在cc中導入aa的方法

1、from modulename import functionname(or *)

(前一種導入特定函數語句,後一種導入所以該模塊下的函數)
from aa import bb(or from aa import *)
bb #(這樣調用bb函數)

2、import modulename

(缺點使用該模塊下的函數時,需要聲明這個模塊的命名空間)
import aa
aa.bb #(這樣調用bb函數)

part2 主程序與待導入模塊不在統一目錄下

上面介紹的是導入模塊與主程序在同級目錄下的情況,下面介紹不同級目錄
明確一點:py找模塊時候,只會在sys.path中的路徑找,sy路徑已經自動中存在當前主程序的目錄,但找module時只會查找py文件,不會搜索當前目錄的子目錄,解決方法後面會說
ps、如何查看sys.path?
import sys
print(sys.path)

1、待導入模塊在主程序目錄下的一個目錄(dir代表目錄,mod代表模塊)

--dir1
   --mod1.py(主程序)
   --dir2
      --mod2.py(待導入模塊)

之前說到找模塊時不會在當前目錄(dir1)下的子目錄找(dir2),所以按照之前part1中所用的import mod2會引起錯誤
解決方法:在dir2下新建__init__.py

--dir1
   --mod1.py(主程序)
   --dir2
      --__init__.py
      --mod2.py(待導入模塊)

這樣就會在dir2下找模塊了
import dir2.mod2

2、待導入模塊在主程序目錄上的一個目錄(dir代表目錄,mod代表模塊)

--dir1
   --mod1.py(待導入模塊)
   --dir2
      --mod2.py(主程序)

解決方法:在sys.path中添加父目錄

import sys
sys.path.append('..')
import mod1

part3總結

1、找模塊是在sys.path中找,且當前目錄默認存在,不會搜索下一層目錄與上一層目錄,解決方法參考上面
2、注意module!=function!=dir

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章