2015-10-12 5 views
4

Еще один новичок python здесь. В настоящее время я использую ноутбук Jupypter в каркасе anaconda.Хотите сохранить и запустить скрипт Python в ноутбуке Jupyter (Anaconda)

Для того, чтобы продолжить свои проекты, используя IPython ноутбук,

мне нужно запустить некоторые из моих питона сценариев (tp.py файлов) на ноутбуке.

from tp import wordtoplural 

Поскольку это делает жизнь намного проще, а не определять все функции в самом ноутбуке.

Как это сделать, в настоящее время importerrors происходит в моем коде.

ImportError: cannot import name wordtoplural 

  1. IPython ноутбук и питон скрипт (.py) находятся в одной и той же папке.
  2. Добавлен пустой файл __init.py__ в этом каталоге.
+0

Он должен быть '__init __. Py', а не' __init. py__' - расширения файлов всегда идут в конце :) –

ответ

5

Убедитесь, что ваш ноутбук ipython находится в той же папке, что и ваш скрипт на языке python. Кроме того, вам может понадобиться создать пустой файл __init__.py в той же папке, что и ваш скрипт python, чтобы сделать импорт работы.

Поскольку вы, вероятно, будете модифицировать свой скрипт python и протестировать его непосредственно на своем ноутбуке, вам может быть интересен плагин autoreload, который автоматически обновит импортированные модули с изменениями, которые вы только что сделали в ваших скриптах python:

%load_ext autoreload 
%autoreload 2 

Обратите внимание, что вам необходимо разместить свой импорт после вызова плагина автозагрузки.

Следует также отметить, что в некоторых случаях вам может понадобиться, чтобы добавить это в IPython ноутбук на самом верху первой ячейки (после% магий):

from __future__ import absolute_import 

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

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

+0

Автозагрузка не работала для меня. –

+1

@RovinBhandari попытается 1- перезапустить ядро, 2- выполнить только код автозагрузки, без какого-либо другого кода в ячейке, 3- выполнить код с вашим импортом. Затем вам нужно повторно выполнить импорт каждый раз, когда вы хотите обновить свой скрипт, автоматически загрузится автозагрузка, чтобы принудительно повторно импортировать. – gaborous

2

О, я нашел решение, что хочу.

В Jupyter Notebook вы можете напрямую передать ячейку в скрипт python.

Я нашел его на IPython учебник, вы можете передать этот [.ipynb file]

Выполнив ниже ячейки в записной книжке, вы можете напрямую передавать свой

код в .py файл в том же каталоге.

%%writefile textproc.py 

def plural(word): 
    if word.endswith('y'): 
     return word[:-1] + 'ies' 
    elif word[-1] in 'sx' or word[-2:] in ['sh', 'ch']: 
     return word + 'es' 
    elif word.endswith('an'): 
     return word[:-2] + 'en' 
    else: 
     return word + 's' 

Затем вы можете получить его, импортировав этот .py-файл следующим образом.

from textproc import plural 
plural('wish') 

Однако, я не мог понять, как получить доступ к любому .py файл, сохраненный в другом каталоге (процедура Импортирование .. или т.п.)

+0

Вам нужно добавить файл '__init __. Py' в каждый каталог, где есть .py-файлы, чтобы их можно было импортировать (добавив этот файл, чтобы преобразовать каталог в пакет python). – gaborous