python - 如何在 Jupyter 笔记本中使用来自外部 Python 文件的代码?
问题描述
我有一个作为 Jupyter 笔记本开始的宠物项目。到目前为止,我把所有的 Python 代码都放在了 notebook 中。
一开始一切都很好。但随着时间的推移,我在笔记本上写的代码变得越来越复杂。现在它几乎无法管理:当我发现错误时,我需要
- 导航到有错误的代码部分(通常在笔记本的开头),
- 修复那里的错误,
- 转到(通常)笔记本的底部以触发我更改的代码的执行。
我想将代码分为两部分:
- 一个将存储为 Python 文件的文件,我将使用编辑器(和/或 IDE)对其进行编辑。
- Jupyter 笔记本中调用代码部分 1 并显示其输出的代码(即使用 Jupyter 笔记本作为步骤 1 中 Python 代码的用户界面)。
假设笔记本在我的本地机器上运行(Windows 7;Jupyter 在 Anaconda 中运行)并且 Python 文件也存储在本地。
有什么好方法可以使用 IPython 文件中的代码,以便我可以频繁快速地修改此代码?
我所说的“频繁且快速”是指“将更改从 Python 文件传播到笔记本所需的步骤尽可能少”。理想的解决方案是我更改其中一个 Python 文件,运行一个命令,然后在 Jupyter 笔记本中提供更改。或者,用一个更老的比喻,我希望它像 PHP 一样——您经常更改代码并立即看到更改的结果。
更新 1:我尝试%load TestClass.py
在单元格中使用该解决方案。
问题是如果文件更改,单元格内容不会更新。
例子:
假设我把文字
class TestClass:
def __init__(self):
print("TestClass constructor")
进入TestClass.py
. 然后我在 Jupyter 笔记本中创建一个单元格,使用%load TestClass.py
. 当我执行该单元格时,将TestClass.py
导入来自的代码并且该行%load TestClass.py
注释掉该行。
现在我TestClass.py
改为
class TestClass:
def __init__(self):
print("TestClass constructor")
print("change")
当我执行单元格时,它的内容没有改变。
解决方案
推荐阅读
- android - 视图绑定:有没有一种方法可以在给定布局 id 的情况下对布局进行一般膨胀?
- python - 无法将 for 循环用作列表理解
- unicode - Windows和Linux之间的特殊char比较行为差异
- c++ - 哪些存储类型不完整的 STL 数据结构可以用作类成员?
- ruby-on-rails - 我应该使用什么将 Rails 应用程序与远程服务器连接起来?
- python - 在 ganache 上调用函数时出现 Web3.py abi keyerror
- backpropagation - 了解 oop Backprop 实现中的错误
- flutter - 在flutter中使用setState和streamBuilder的正确方法或区别
- amazon-web-services - 为 AWS Lambda@Edge 选择边缘站点
- javascript - 将整数从 JSP 发送到 Servlet