Рабочая ситуация
У меня есть файл hello.py
с базовой функцией
def say_hello()
print("hello world")
return
И notebook.ipynb
в том же каталоге (что делает "импорт "работа"
%load_ext autoreload
%autoreload 2
import hello
Затем каждый раз, когда я обновляю файл hello.py, автозагрузка работает:
hello.say_hello()
Out >>> "Hello world with autoreload working"
Проблемная ситуация
Когда файл hello.py
не находится в том же каталоге, я не могу использовать "импорт", поэтому у меня есть:
%load_ext autoreload
%autoreload 2
from importlib.machinery import SourceFileLoader
hello = SourceFileLoader("hello", '/path/to/hello.py').load_module()
Сначала он работает:
hello.say_hello()
Out >>> "Hello world"
Но после того, как я отредактировал файл python:
def say_hello()
print("hello world again")
return
И повторно выполнил функцию, он возвращает предыдущую версию файла И выдает ошибку
hello.say_hello()
Out >>> "Hello world"
[autoreload of failed: Traceback (most recent call last):
File "C:\Program Files\Python36\Lib\site-
packages\IPython\extensions\autoreload.py", line 244, in check
superreload(m, reload, self.old_objects)
File "C:\Program Files\Python36\Lib\site-packages\IPython\extensions\autoreload.py", line 376, in superreload
module = reload(module)
File "C:\Program Files\Python36\Lib\imp.py", line 314, in reload
return importlib.reload(module)
File "C:\Program Files\Python36\Lib\importlib\__init__.py", line 166, in reload
_bootstrap._exec(spec, module)
File "<frozen importlib._bootstrap>", line 589, in _exec
AttributeError: 'NoneType' object has no attribute 'name'
]
Как выполнить автозагрузкуфайл Python по определенному пути из записной книжки Jupyter?