7
我想使用模塊,例如, BeautifulSoup,在我的Python代碼,所以我通常將其添加到文件的頂部:僅在Python中不存在模塊時才導入模塊
from BeautifulSoup import BeautifulSoup
然而,當我發佈我寫的模塊,其他人可能沒有BeautifulSoup,所以我就包括它在我的目錄結構如下所示:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 9/19/2011 5:45 PM BeautifulSoup
-a--- 9/17/2011 8:06 PM 4212 myscript.py
現在,我的修改myscript.py文件看起來像這樣在頂部引用BeautifulSoup的本地副本:如果dev的
from BeautifulSoup.BeautifulSoup import BeautifulSoup, CData
但誰使用我的圖書館的Eloper已經在他們的機器上安裝了BeautifulSoup?我想修改myscript.py,以便檢查是否已安裝BeautifulSoup,如果是,請使用標準模塊。否則,使用包含的。
使用僞蟒蛇:
if fBeautifulSoupIsInstalled:
from BeautifulSoup import BeautifulSoup, CData
else:
from BeautifulSoup.BeautifulSoup import BeautifulSoup, CData
這可能嗎?如果是這樣,怎麼樣?
從http://effbot.org/zone/import-confusion.htm摘自:'當Python導入一個模塊,它首先檢查模塊註冊表(sys.modules中),以看看模塊是否已經導入。如果是這樣,Python會按原樣使用現有的模塊對象。「 – mwan
嘗試導入它。如果不起作用,請捕獲ImportError並從本地副本導入。將其他名稱命名爲本地副本(myBeautifulSoup),以便它不隱藏用戶安裝的模塊。 –
@mwan:Ben不需要知道它是否已經*導入*,他需要知道它是否已經*在系統*上。 –