python對於跨包調用函數時,經常會提示模塊不存在的問題,主要是python程序執行時,搜索路徑導致的,python程序執行的路徑依次是:
(1)程序根目錄
(2)環境變量
(3)標准庫目標(D:\Python27\Lib 標准庫是在lib文件下)
(4)第三方庫的目錄(D:\Python27\Lib\site-packages 第三方庫在site-packages文件下)
(2)環境變量
(3)標准庫目標(D:\Python27\Lib 標准庫是在lib文件下)
(4)第三方庫的目錄(D:\Python27\Lib\site-packages 第三方庫在site-packages文件下)
如下圖所示,明明test1文件是存在的,但是跨包調用時,就出現test1不存在的問題,原因是當test2模塊去調用test1中的模塊時,會先去pack2目錄下查找,pack2下沒有要調用的模塊和函數,所以很可能就停止了查找,彈出錯誤提示;

解決的辦法是,可以把調用文件的主目錄加到環境變量中
操作步驟:
import os import sys #步驟1:當前處於pack2d的test2文件目錄,路徑為dir1 dir1=os.path.dirname(__file__) print '當前文件目錄:',dir1 #步驟2:pack2的主目錄是day6,路徑為:dir2 dir2=os.path.dirname(os.path.dirname(__file__)) print '當前文件的主目錄:',dir2 #步驟3:把day6目錄加到環境變量中 sys.path.append(dir2) for item in sys.path: print item #步驟4:直接導入test1文件,然后再次調用test1里面的函數,不會再報錯了 import test1 test1.testfun()
執行結果如下:
test1中函數內容是:
如果,上面的方法不管用的話,可以在file-setting-project-project Sources,把包放入到Sources中,就OK了,有時候第一種方法不管用,就用第二種,有時候第二種不管用,就用第一種
