Импортировать модуль в Python, только если он еще не существует - PullRequest
7 голосов
/ 20 сентября 2011

Я хочу использовать модуль, например BeautifulSoup, в моем коде Python, поэтому я обычно добавляю это в начало файла:

from BeautifulSoup import BeautifulSoup

Однако, когда я распространяю модуль, который я пишу, у других может не быть BeautifulSoup, поэтому я просто включу его в структуру каталогов следующим образом:

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         9/19/2011   5:45 PM            BeautifulSoup
-a---         9/17/2011   8:06 PM       4212 myscript.py

Теперь мой модифицированный файл myscript.py будет выглядеть так в верхней части, чтобы ссылаться на локальную копию BeautifulSoup:

from BeautifulSoup.BeautifulSoup import BeautifulSoup, CData

Но что, если разработчик, использующий мою библиотеку, уже установил BeautifulSoup на своем компьютере? Я хочу изменить myscript.py, чтобы он проверял, установлен ли BeautifulSoup, и если да, то используйте стандартный модуль. В противном случае используйте входящий в комплект.

Использование псевдо-питона:

if fBeautifulSoupIsInstalled:
    from BeautifulSoup import BeautifulSoup, CData
else:
    from BeautifulSoup.BeautifulSoup import BeautifulSoup, CData

Возможно ли это? Если да, то как?

1 Ответ

15 голосов
/ 20 сентября 2011

Обычно для обработки этой ситуации в Python используется следующий шаблон.

Сначала переименуйте ваш модуль BeautifulSoup в другое, например, MyBeautifulSoup

Тогда:

try:
    import BeautifulSoup # Standard
except ImportError:
    import MyBeautifulSoup as BeautifulSoup # internal distribution
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...