2012-11-08 73 views
1

不確定這是可能的,但想知道是否有任何建議。從文件中導入對象而不運行該文件的導入

說我有一個文件foo.py,它看起來像

import doesnotexist 

bar = "Hello, World!" 

我想做一個from foo import bar,但由於進口在此新文件的範圍存在,這將失敗。這樣做是把bar在新文件中的

一種方式叫bar.py並有foo.py也導入,而是想跳過,如果可能的。

任何想法?

+1

你的問題比較模糊;爲什麼不捕獲'import doesnotexist'引發的異常? –

+0

不,因爲那樣你就不會'bar' – jdborg

+0

我的意思是*在foo.py *裏面。否則,您無法從運行時異常的模塊中獲取「bar」。 –

回答

1

沒有辦法只導入模塊的一部分 - 在拉出你要求的部件之前,Python會加載整個模塊。

正如評論中所述,您可以捕獲模塊內部的導入錯誤並忽略它。如果您嘗試使用未導入的模塊,則您的代碼會生成錯誤。

try: 
    import doesnotexist 
except ImportError: 
    pass 

bar = "Hello, World!"