Quiero usar un módulo, p. BeautifulSoup, en mi código Python, por lo que suelen añadir esto a la parte superior del archivo:Importar un módulo en Python solo si no existe
from BeautifulSoup import BeautifulSoup
Sin embargo, cuando se distribuyo el módulo que estoy escribiendo, otros pueden no tener BeautifulSoup, así que voy a incluyo en mi estructura de directorios, así:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 9/19/2011 5:45 PM BeautifulSoup
-a--- 9/17/2011 8:06 PM 4212 myscript.py
Ahora, mi archivo myscript.py modificado se verá así en la parte superior para hacer referencia al copia local de BeautifulSoup:
from BeautifulSoup.BeautifulSoup import BeautifulSoup, CData
Pero lo que si el dev eloper que usa mi biblioteca ya tiene instalado BeautifulSoup en su máquina? Deseo modificar myscript.py para que compruebe si BeautifulSoup ya está instalado y, de ser así, utilice el módulo estándar. De lo contrario, use el incluido.
Usando Pseudo-Python:
if fBeautifulSoupIsInstalled:
from BeautifulSoup import BeautifulSoup, CData
else:
from BeautifulSoup.BeautifulSoup import BeautifulSoup, CData
Es esto posible? ¿Si es así, cómo?
Tomado de http://effbot.org/zone/import-confusion.htm: 'Cuando Python importa un módulo, primero comprueba el registro del módulo (sys.modules) a ver si el módulo ya está importado. Si ese es el caso, Python usa el objeto de módulo existente tal como está. – mwan
Intente importarlo. Si no funciona, capture ImportError e importe desde su copia local. Denomine a su copia local algo más (myBeautifulSoup) para que no oculte el módulo instalado por el usuario. –
@mwan: Ben no necesita saber si ya * importó *, necesita saber si * ya está en el sistema *. –