Как перезагрузка модуля работает в python 3.7.1?
Настройка и сводка
Я использую python 3.7.1 в Linux.Я занимаюсь разработкой модуля C, и было бы очень удобно перезагрузить модуль после его изменения.Я следовал Как выгрузить (перезагрузить) модуль Python? , но я не могу заставить его работать в этой среде.
Для демонстрации своей проблемы я написал простой модуль на основена примере СПАМА в учебнике, который возвращает время сборки модуля.Он никогда не будет перезагружен.
Код
Реализация - пример спама из учебника.Он имеет единственную функцию hello, которая возвращает время сборки:
return Py_BuildValue("s", __TIME__);
Я компилирую и загружаю с помощью следующего скрипта Python:
import os
import helloworld
print(helloworld.hello('test'))
os.system("touch helloworld.c")
os.system("python3 setup.py build")
os.system("python3 setup.py install --user")
from importlib import reload
helloworld=reload(helloworld)
print(helloworld.hello('test'))
Модуль импортирован, основной файлкоснулся, он компилируется и устанавливается, а затем перезагружается.
Вывод
Модуль должен показывать новое время компиляции после перезагрузки, но вывод не меняется (я пропускаю некоторые сообщения отладки, выходные данные - первая / последняя строка, 08:04:20):
python driver.py
08:04:20
running build
running build_ext
building 'helloworld' extension
gcc ...
running install
running build
running build_ext
running install_lib
copying build/lib.linux-x86_64-3.7/helloworld.cpython-37m-x86_64-linux-gnu.so -> /home/wuebbel/.local/lib/python3.7/site-packages
running install_egg_info
Removing /home/wuebbel/.local/lib/python3.7/site-packages/HelloWorld-2.1-py3.7.egg-info
Writing /home/wuebbel/.local/lib/python3.7/site-packages/HelloWorld-2.1-py3.7.egg-info
08:04:20
Повторный запуск скрипта загружает правильный модуль и показывает новое время:
wuebbel@02e267406db3:~/Projekte/Mandelbrot Demos/helloworld$ python driver.py
08:16:58
...
08:16:58
Itкажется, что мой модуль никогда не перезагружается.Как правильно это сделать?