Как правильно импортировать модули, когда я пишу свой собственный модуль в python? - PullRequest
0 голосов
/ 27 мая 2020

Я искал похожие вопросы, но то, что я нашел, у меня не работает.
Я пишу отчет о своем анализе в блокноте jupyter (скажем, main.ipynb). Я хочу импортировать внешний файл functions.py с некоторыми функциями, которые я использую для построения некоторых результатов. Если быть точным, мой рабочий каталог имеет следующую структуру:
- main.ipynb
- utils
---- functions.py
---- другие файлы. ..

Файл functions.py выглядит примерно так:

import matplotlib.pyplot as plt


def myPlot():
    plt.figure()
    plt.plot([0,1],[0,1])
    plt.show()
    ....

, а первая ячейка записной книжки следующая:

import matplotlib.pyplot as plt
from utils.functions import *

myPlot()

Когда я запускаю ноутбук, я получаю эту ошибку: NameError: name 'plt' is not defined, хотя я определил plt в обоих файлах (даже если я думаю, что мне это действительно не нужно в main.ipynb).

S0, какой правильный способ импортировать пакет (в данном случае matplotlib.pyplot) во внешний файл? Что я делаю не так?

1 Ответ

0 голосов
/ 03 июня 2020

Я обнаружил недостаток в своем коде и думаю, что им стоит поделиться, поэтому я здесь.
Возможно, для новичков, использующих jupyter notebook (как я), это будет сложно обнаружить: как только вы запустите ячейку с оператором импорта, не имеет значения, отредактируете ли вы свой файл functions.py и повторно запустите эту ячейку. Ядро уже импортировало файл с таким же именем, поэтому оно не заметит разницы, даже если вы внесли изменения.

Решение, которое я нашел (и я думаю, что оно единственное) - перезапускать ядро ​​каждый раз, когда вы меняете файл functions.py.

...