简体   繁体   中英

Import a module in Python only if it doesn't already exist

I want to use a module, eg 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?

Usually the following pattern is used to handle this situation in Python.

First rename your BeautifulSoup module something else, eg MyBeautifulSoup

Then:

try:
    import BeautifulSoup # Standard
except ImportError:
    import MyBeautifulSoup as BeautifulSoup # internal distribution

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM