开发者

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

开发者 https://www.devze.com 2023-04-06 04:30 出处:网络
I want to use a module, e.g. BeautifulSoup, in my Python code, so I usually add this to the top of the file:

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
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号