2011-12-05 51 views
1

是否可以從包中導入除一個模塊以外的所有內容?Python:導入異常

我需要從我的類中使用的特定庫中獲取大量模塊,但它看起來像是爲我需要的模塊之一使用了相同的模塊名稱。

我需要使用set操作和交集,但是當我從我的類中導入該庫時,它會因此而給我一個錯誤。

我不想單獨導入它,或者將名稱放在每個方法的前面,因爲我使用它很多。

有沒有辦法讓python導入除set之類的特定方法之外的所有內容? 或者稍後再導入set部件?

+0

'from〜import *'不是有效的語法。如果你提到*你正在使用什麼*模塊和你試圖用來導入它的* exact *語句,而不是讓我們猜測所有這些,這將會有所幫助。 – kindall

+0

我有點困惑,你有一個定義'set'的模塊?你能告訴我們示例代碼嗎? – birryree

+0

我認爲他們不可能聲明一個'''set'''函數...是嗎?你能分享進口聲明嗎? – FakeRainBrigand

回答

5

不,沒有術語from ... import * except blah, bleh, bluh。您可以編寫自己的導入功能來支持它,或做類似:

from xyz import * 
del set 

將停止陰影內置set這樣你就可以再次使用它。然後,如果你需要的xyz.set功能,你可以這樣做:

from xyz import set as xyzset 

注:from ... import *通常好習慣,你應該確保你正在使用的模塊,這種方式支持它 - 如果他們不這樣做明確說他們被設計成以這種方式使用,那麼你不應該(除非你喜歡後來調試奇怪的問題;)。

+0

哦..這工作!非常感謝!!沒有考慮使用del:D我會記住from ... import *部分。謝謝! – Dennis

0

我想您會是什麼:

from thing import a, b, c, d, e, f 

這將導入a, b, c, d, e, fthing

據我所知,是沒有辦法做一個from thing import all but a, b, c
這就是爲什麼存在擺在首位

import thing 
thing.a 

0

我不知道我完全理解發生了什麼(給實際的模塊名稱可能有幫助)。但一般認爲根本不好做from ... import *,因爲那時特定事物的來源並不明顯。相反,請做from ... import thingA, thingB, thingC

您也可以做import ... as shortname,然後參考方法shortname.whatever(其中shortname顯然可能非常短)。