繁体   English   中英

ipython自动重载不起作用

[英]ipython autoreload doesn't work

autoreload 在子目录中根本不适合我。

目录结构:

run.ipynb
oof.py
pertussis/
    |-- __init__.py

run.ipynb我有(用笔记本运行):

from pertussis import *
check() #defined in the module

这不起作用。 我什么都试过了。 我在代码中、配置文件中、到处都添加了自动重载魔法。 我还将模块的文件夹添加到 sys.path 列表中。 从来没有重载过。 我尝试从笔记本重新加载常规文件oof.py ,而不是直接加载模块。

oof.py我有:

from pertussis import *
def check_2():
  print ("Hello")

现在发生的是 check_2 已成功自动重新加载,但模块中的检查仍未重新加载。

似乎没有任何效果,我迷路了。

对于迟到的回复感到抱歉,我偶然发现了类似的问题。

在你的run.ipynb中 ,你尝试过:

import pertussis
pertussis.check()

要么

%load_ext autoreload 
%autoreload 1

然后

%aimport pertussis
check = pertussis.check  # optional shortcut
check()

我不认为这是一个 iPython 问题,而是由于from import 的性质。

以下来自Learning Python Oreilly, p798(第 5 版)

...因为在运行时from副本(分配)名称中,没有链接返回到名称来自的模块。 使用from导入的名称简单地成为对对象的引用,当from运行时,这些对象恰好被导入者中的相同名称引用。

一种解决方法是使用import和名称限定。 例如:

import pertussis
pertussis.check()

然后在oof.py

import pertussis # now must use full name qualification
def check_2():
  print ("Hello")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM