I want to use a module, e.g. BeautifulSoup, in my Python code, so I usually add this to the top of the file:
from BeautifulSoup import BeautifulSoup
However, when I distribute the module I'm writing, others may not have BeautifulSoup, so I'll just include it in my directory structure like so:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 9/19/2011 5:45 PM BeautifulSoup
-a--- 9/17/2011 8:06 PM 4212 myscript.py
Now, my modified myscript.py file will look like this at the top to reference the local copy of BeautifulSoup:
from BeautifulSoup.BeautifulSoup import BeautifulSoup, CData
But what if the developer who uses my library already has BeautifulSoup installed on their machine? I want to modify myscript.py so that it checks to see if BeautifulSoup is already installed, and if so, use the standard module. Otherwise, use the included one.
Using Pseudo-python:
if fBeautifulSoupIsInstalled:
from BeautifulSoup import BeautifulSoup, CData
else:
from BeautifulSoup.BeautifulSoup import BeautifulSoup, CData
Is this possible? If so, how?
When Python imports a module, it first checks the module registry (sys.modules) to see if the module is already imported. If that’s the case, Python uses the existing module object as is.