python - 每次添加新功能时都必须重新加载内核吗?
问题描述
所以,我正在开发一个 Python 包,我这样做的方式是,我在笔记本中测试函数,然后将它们卸载到 functions.py 等。
/testpack/
__init.py__
functions.py
plotting.py
/notebooks/
plottingnotebook.ipynb
我的笔记本里有这个:
# Project package
module_path = os.path.abspath(os.path.join('../'))
if module_path not in sys.path:
sys.path.append(module_path)
import testpack as tp # Import project package
但是当我添加新功能或更改现有功能时functions.py
,例如,并在笔记本中重新导入,这些功能将无法使用。
但是,当我在笔记本中重新启动内核时,这会起作用。
这是预期的行为吗?如果没有,我如何确保可以导入我所做的更改而无需重新启动内核?
解决方案
Python 认为你已经导入了模块,所以它会跳过它。你可以强制 python 重新导入模块,方法是reload
使用importlib
. 请注意,reload
如果尚未导入模块,则会引发 NameError 。这样的方案应该可行
try:
import importlib
importlib.reload(tp)
except NameError: # It hasn't been imported yet
import testpack as tp
推荐阅读
- angular - 我收到日期错误'参数字典包含不可为空类型'System.DateTime'的参数'Fromdate'的空条目'
- c# - 在 Visual Studio 中创建方法模板 C#
- javascript - 无法在函数中设置状态
- pandas - 如何从熊猫数据框中减去熊猫系列?
- oracle - 如何在oracle中对特定列的删除或更新执行触发器?
- php - 如何输出子数组?
- css - Wordpress 自定义小部件的父 css 和父 css 的父级
- java - Java Springboot Restemplate响应500,而邮递员不是
- tensorflow - 使用 tensorflow 服务进行预测时,张量名称没有形状信息错误
- typescript - 在 React Material-UI 中实现全局主题