我正在使用 Python Notebook,我希望将 大输入代码 [input] 打包到 [\* .PY] 文件中,并从 notebook 中调用该文件。
我知道从 Notebook 运行 [.PY] 文件的操作,并且命令在 Linux 或 Windows 之间有所不同。 但是当我执行此操作并从笔记本执行 [.PY] 文件时,它无法识别笔记本中加载的任何现有库或变量(就像 [ .PY] 文件从零开始……)。
有没有什么办法解决这一问题?
该问题的一个可能的简化示例如下:
In[1]:
import numpy as np
import matplotlib.pyplot as plt
In[2]:
def f(x):
return np.exp(-x ** 2)
In[3]:
x = np.linspace(-1, 3, 100)
In[4]:
%run script.py
其中“ script.py ”具有以下内容:
plt.plot(x, f(x))
plt.xlabel("Eje $x$",fontsize=16)
plt.ylabel("$f(x)$",fontsize=16)
plt.title("Funcion $f(x)$")
- 在真正的问题中,文件 [*.PY] 没有 4 行代码,它已经足够多了。
原文由 JMSH 发布,翻译遵循 CC BY-SA 4.0 许可协议
在
%run
魔术文档 中,您可以找到:因此,提供
-i
就可以了:“正确”的做法
也许上面的命令正是您所需要的,但是考虑到这个问题得到的所有关注,我决定为那些不知道更 pythonic 方式的人多加几美分。
上面的解决方案有点 hacky,并且使另一个文件中的代码变得混乱(这个
x
变量来自哪里?以及f
函数是什么?)。我想向您展示如何做到这一点,而不必实际一遍又一遍地执行另一个文件。
只需将它变成一个具有自己的函数和类的模块,然后从您的 Jupyter 笔记本或控制台导入它。这也有使其易于重用的优势,并且 jupyters contextassistant 可以帮助您自动完成或向您显示文档字符串(如果您编写了文档字符串)。
如果您一直在编辑其他文件,那么
autoreload
会为您提供帮助。您的示例如下所示:
脚本.py
Jupyter 控制台