在IPython中重新加载子模块

发布于 2021-02-02 23:09:30

目前,我正在处理一个包含子模块并使用numpy / scipy的python项目。Ipython用作交互式控制台。不幸的是,我对现在使用的工作流程不是很满意,请多多指教。

在IPython中,该框架是通过一个简单的import命令加载的。但是,通常有必要在框架的子模块之一中更改代码。至此,已经加载了一个模型,并且我使用IPython与之交互。

现在,该框架包含许多相互依赖的模块,即,在最初加载框架时,主模块正在导入和配置子模块。仅当使用重新加载模块时,才执行对代码的更改reload(main_mod.sub_mod)。这很麻烦,因为我需要使用完整路径分别重新加载所有更改的模块。如果reload(main_module)还重新加载所有子模块,但又不重新加载numpy / scipy ,将非常方便。

关注者
0
被浏览
78
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    IPython带有一些自动重装魔术:

    %load_ext autoreload
    %autoreload 2
    

    每次执行新行之前,它将重新加载所有更改的模块。它的工作方式与稍有不同dreload。有一些警告,请键入%autoreload?以查看可能出问题的地方。

    如果要始终启用此设置,请修改IPython配置文件~/.ipython/profile_default/ipython_config.py[1]并附加:

    c.InteractiveShellApp.extensions = ['autoreload']     
    c.InteractiveShellApp.exec_lines = ['%autoreload 2']
    

    通过下面的评论归功于@Kos

    [1]如果你没有该文件~/.ipython/profile_default/ipython_config.py,则需要先调用ipython profile create。或者文件可能位于$IPYTHONDIR



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看