NameError: имя get_ipython не определено

Я работаю над фреймворком Caffe и использую интерфейс PyCaffe. Я использую сценарий Python, полученный при преобразовании IPython Notebook 00-classification.ipynb для тестирования классификации с помощью обученной модели для ImageNet. Но любой оператор get_ipython () в скрипте выдает следующую ошибку:

$ python python/my_test_imagenet.py 
Traceback (most recent call last):
  File "python/my_test_imagenet.py", line 23, in <module>
    get_ipython().magic(u'matplotlib inline')

В скрипт я импортирую следующее:

import numpy as np
import matplotlib.pyplot as plt

get_ipython().magic(u'matplotlib inline')

# Make sure that caffe is on the python path:
caffe_root = '/path/to/caffe/'
import sys
sys.path.insert(0, caffe_root + 'python')

import caffe

plt.rcParams['figure.figsize'] = (10, 10)
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'

import os

# ... Rest of the code...

Может ли кто-нибудь помочь мне решить эту ошибку?


person dyno8426    schedule 12.09.2015    source источник
comment
куда вы это импортировали?   -  person Barun Sharma    schedule 12.09.2015
comment
Я импортировал это в скрипт Python, где я пытаюсь использовать оператор get_ipython ().   -  person dyno8426    schedule 12.09.2015
comment
В моем случае я развертывал приложение Flask, размещенное в Azure, и мне не нужен ipython. Я это прокомментировал.   -  person Shady Mohamed Sherif    schedule 14.02.2019


Ответы (3)


Вы должны запустить свой скрипт с помощью ipython:

$ ipython python/my_test_imagenet.py

Тогда get_ipython будет уже в глобальном контексте.

Примечание. Импортировать его через from IPython import get_ipython в обычную оболочку python не получится, так как вам действительно нужно ipython запустить.

person beezz    schedule 12.09.2015
comment
Я пробовал описанное выше, но выдает следующую ошибку: UsageError: Недействительный запрос графического интерфейса u'inline ', допустимые: pyglet, osx, qt5, qt, glut, gtk, gtk3, tk, wx. - person dyno8426; 14.09.2015
comment
@AdarshChauhan использует matplotlib auto вместо matplotlib inline. - person Syrtis Major; 19.01.2016
comment
@beezz Как я могу проверить (внутри скрипта), был ли мой скрипт запущен ipython вместо python? - person SebMa; 10.07.2017
comment
@SebMa вы можете поймать NameError в простом питоне, вызванном отсутствием get_ipython - person beezz; 14.07.2017
comment
Это происходит из вывода _1 _... зачем ему создавать файл, который не запускается? Похоже, это противоречит цели этой команды. Кроме того, почему вывод начинается с #!/bin/env python, если он действительно предназначен для запуска с ipython? - person MichaelChirico; 28.07.2019

Если вы собираетесь запустить конвертированный блокнот с файлом .py, вам следует просто закомментировать get_ipython() операторы. Вывод matlibplot не может отображаться внутри консоли, поэтому вам придется поработать. В идеале iPython не должен генерировать эти операторы. Для отображения графиков вы можете использовать следующее:

plt.show(block=True)
person Shital Shah    schedule 30.12.2017

get_ipython доступен только в том случае, если был импортирован модуль IPython, что происходит неявно, если вы запускаете оболочку ipython (или записную книжку Jupyter).

В противном случае импорт не удастся, но вы все равно можете импортировать его явно с помощью:

from IPython import get_ipython
person Vincenzooo    schedule 15.05.2020