2016-07-07 3 views
1

Очень простой вопрос Jupyter:Jupyter не находит класс Python

У меня есть две ячейки в ноутбуке Jupyter. Ни один не имеет имени (ни назван Perceptron.py - я не знаю, как назвать их)

Один начинается так:

class Perceptron(object): 

, а другой делает это:

from Perceptron import Perceptron 

и я получаю эту ошибку:

ImportError: No module named Perceptron 

Очевидно, я не назвал первую ячейку «Perceptron.py», но я не вижу, как для этого. Или каталог не является частью пути для классов. Каков наилучший способ решить эту проблему?

+0

(Noob) - Just coz был удален из заголовка – AK47

+0

(Noob) Является ли классом Perceptron в файле под названием Perceptron.py? Является Perceptron.py на вашем пути Python или в том же каталоге, что и файл, из которого вы его вызываете? – AK47

+0

@tehjoker, спасибо, я в среде IDE, и я не установил путь Python в среде IDE. Я считаю, что ячейка (то, что я хочу быть Perceptron.py) находится в том же каталоге. Я не знаю, как установить имя ячейки. – sploiber

ответ

2

Ваш комментарий о «именования» клетки предполагает, что вы считаете клетки в виде отдельных файлов; однако, ноутбуки Jupyter не являются отдельными файлами - они являются частью одного и того же файла.

Если вы пишете питон скрипт, вы бы объявить свой класс, а затем выполнить свой класс так:

class Foo: 
    def __init__(self): 
     self.Bar = "win!" 

foo = Foo() 
print(foo.Bar) 

Ноутбуки одинаковы, но вы можете выбрать, чтобы отделить код в разных сотах организовать код:

# Cell 1 
class Foo: 
    def __init__(self): 
     self.Bar = "win!" 

и

# Cell 2 
foo = Foo() 
print(foo.Bar) 

Ломать код в клетки также позволяет выполнять код в другом порядке, чем если бы он был в обычном скрипте. Итак, если вы не выполнили код, объявляющий класс Perceptron, вы не можете создать экземпляр Perceptron.

Другим подходом к отладке вашей проблемы является слияние ячеек, которые кажутся неправильными. Нет ничего плохого в том, чтобы поместить весь ваш код в одну и ту же ячейку. Если ваш код не будет работать вместе, что-то не так с вашим кодом. Как только вы его заработаете, вы можете разделить код на отдельные ячейки.

+0

Спасибо Гордон. Я объединил их, и он работает. Поэтому я должен попробовать разделить сейчас, отдельно. Спасибо за помощь. – sploiber

2

Поскольку у вас нет файла с именем Perceptron.py, для этого вам не нужно делать заявление import. Ячейки в ноутбуках Jupyter могут использовать переменные друг от друга. Все, что вам нужно сделать, это нажать на ячейку и нажать shift и enter, чтобы «запустить» ее.

Если у вас есть класс (например, Perceptron) в этой ячейке, он должен быть доступен из любой другой ячейки в одном ноутбуке.

В другой камере, вы просто должны быть в состоянии сделать:

foo = Perceptron()

+0

Спасибо @Ryan, но он дает мне «имя« Перцептрон »не найден». Так или иначе, он не может найти другую ячейку, или мне не хватает какого-либо утверждения в ячейке с Перцептроном. У меня нет утверждения модуля в ячейке Перцептрона; он только начинается с класса Перцептрона. – sploiber

+1

Еще раз спасибо @Ryan. Мне понравился другой ответ немного лучше, но вы были очень полезны. – sploiber

Смежные вопросы