dyno8426
dyno8426

Reputation: 1249

NameError: name 'get_ipython' is not defined

I am working on Caffe framework and using PyCaffe interface. I am using a Python script obtained from converting the IPython Notebook 00-classification.ipynb for testing the classification by a trained model for ImageNet. But any get_ipython() statement in the script is giving the following error:

$ 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')

In the script, I'm importing the following:

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...

Can someone please help me to resolve this error?

Upvotes: 69

Views: 139091

Answers (4)

naive_district
naive_district

Reputation: 77

Just want to add that converting ipynb file to py having magic functions in your script trigger the same error as well since for instance %%time converts to get_ipython().run_cell_magic('time')

Why so? Magic functions (magics) are often present in the form of shell-like syntax, but they are python functions under the hood.

The conversion from cell magics to get_ipython() commands is a part of nbconvert and is required to get a runnable python script, as cell magics are not valid python outside of a notebook cell(things like magics or aliases are turned into function calls)

Upvotes: 2

Vincenzooo
Vincenzooo

Reputation: 2391

get_ipython is available only if the IPython module was imported that happens implicitly if you run ipython shell (or Jupyter notebook).

If not, the import will fail, but you can still import it explicitly with:

from IPython import get_ipython

Upvotes: 12

Shital Shah
Shital Shah

Reputation: 68708

If your intention is to run converted .py file notebook then you should just comment out get_ipython() statements. The matlibplot output can't be shown inside console so you would have some work to do . Ideally, iPython shouldn't have generated these statements. You can use following to show plots:

plt.show(block=True)

Upvotes: 25

beezz
beezz

Reputation: 2428

You have to run your script with ipython:

$ ipython python/my_test_imagenet.py

Then get_ipython will be already in global context.

Note: Importing it via from IPython import get_ipython in ordinary shell python will not work as you really need ipython running.

Upvotes: 88

Related Questions