Import a module in Python only if it doesn't already exist
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 开发者_如何学C 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?
Usually the following pattern is used to handle this situation in Python.
First rename your BeautifulSoup module something else, e.g. MyBeautifulSoup
Then:
try:
import BeautifulSoup # Standard
except ImportError:
import MyBeautifulSoup as BeautifulSoup # internal distribution
精彩评论