Тестирование на наличие IPython
У меня есть тот же код, который я иногда запускаю из командной строки, как python source.py
и иногда копировать / вставлять его в интерактивный IPython. Я хотел бы выполнить немного другой код в любом случае, и попытался внедрить различия в следующий блок кода:
try:
__IPYTHON__
# do IPython-mode code
except NameError:
# do script-mode code
Я знаю, что в Python это распространенный метод, но он облажает автоматическое пометка в PyCharm, и я надеялся найти более привлекательный способ проверки на наличие IPython, возможно, путем тестирования '__IPYTHON__' in ...
или что-то подобное. Тем не менее, я увидел, что этот символ не находится ни в locals()
ни в globals()
, Есть ли другое место, которое я могу проверить на его наличие, или любое другое, более традиционное, не использующее исключения напрямую?
Я использую Python 2.7.11 и IPython 5.1.0. Большое спасибо.
ОБНОВЛЕНИЕ Связано, но бесполезно: Как проверить, существует ли переменная?
2 ответа
Я думаю, что вы ищете
if hasattr(__builtins__, '__IPYTHON__'):
print('IPython')
else:
print('Nope')
Пока текущий принятый ответ работает в
__main__
пространство имен, он не будет работать в пакете из-за __builtins__
быть dict в других пространствах имен . Это должно работать в любом пространстве имен в python3:
import builtins
getattr(builtins, "__IPYTHON__", False)