python不同包之間調用時提示文件模塊不存在的問題


python對於跨包調用函數時,經常會提示模塊不存在的問題,主要是python程序執行時,搜索路徑導致的,python程序執行的路徑依次是:
(1)程序根目錄
(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了,有時候第一種方法不管用,就用第二種,有時候第二種不管用,就用第一種

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM