Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IPython笔记本:如何在特定的Python文件中重新加载所有模块?_Python_Ipython_Ipython Notebook - Fatal编程技术网

IPython笔记本:如何在特定的Python文件中重新加载所有模块?

IPython笔记本:如何在特定的Python文件中重新加载所有模块?,python,ipython,ipython-notebook,Python,Ipython,Ipython Notebook,我在一个文件中定义了许多模块,并将myFile import*中的添加到我的ipython笔记本的第一行,这样我就可以将它用作本笔记本中其他部分的依赖项 目前我的工作流程是: 修改myFile 重新启动Ipython内核 重新运行Ipython中的所有代码 有人知道是否有一种方法可以在不需要重新启动Ipython内核的情况下重新加载myFile中的所有模块吗?谢谢 重新启动并打开笔记本后,应通过运行所有单元格来启动工作流。在顶部菜单中,在执行任何其他操作之前,首先从ipython文档中选择“单元

我在一个文件中定义了许多模块,并将myFile import*中的
添加到我的ipython笔记本的第一行,这样我就可以将它用作本笔记本中其他部分的依赖项

目前我的工作流程是:

  • 修改
    myFile
  • 重新启动Ipython内核
  • 重新运行Ipython中的所有代码

  • 有人知道是否有一种方法可以在不需要重新启动Ipython内核的情况下重新加载
    myFile
    中的所有模块吗?谢谢

    重新启动并打开笔记本后,应通过运行所有单元格来启动工作流。在顶部菜单中,在执行任何其他操作之前,首先从ipython文档中选择“单元格->全部运行”

    In [1]: %load_ext autoreload
    
    In [2]: %autoreload 2
    
    In [3]: from foo import some_function
    
    In [4]: some_function()
    Out[4]: 42
    
    In [5]: # open foo.py in an editor and change some_function to return 43
    
    In [6]: some_function()
    Out[6]: 43
    
    您还可以通过执行以下操作将自动重新加载配置为自动进行:
    ipython配置文件创建

    并将以下内容添加到
    ~/.config/ipython/profile\u default/ipython\u config.py

    c.InteractiveShellApp.extensions = ['autoreload']
    c.InteractiveShellApp.exec_lines = ['%autoreload 2']
    c.InteractiveShellApp.exec_lines.append('print("Warning: disable autoreload in ipython_config.py to improve performance.")')
    
    注意:如果重命名函数,则需要重新运行
    import
    语句使用importlib

    import importlib
    importlib.reload(my_awesome_python_script)
    
    因此,当您在后端对
    my_awesome\u python\u脚本
    进行更改时,无需重新启动内核或重新运行整个笔记本。重新运行这个单元。
    如果您在内存密集型数据集上做了大量工作,这将非常有用,但这也需要重新启动IPython内核,对吗?@WeiChen不,您不必重新启动IPython内核,您可以随时执行“Cell->Run all”。但这不起作用,由于Ipython笔记本不会通过运行“Run all”导入最新版本的
    myFile
    ,相反,它会假设它已经被导入并跳过该单元格。我不知道为什么会被否决,但这是一个合理的答案,对我来说很有效,@JakeWagner是的,有时我不确定为什么否决投票的人会这么快回答。无论如何,谢谢你的支持投票!我不喜欢最后一句话(“如果你重命名…):为什么Jupyter不能自动这么做?