[英]Celery doesn't work with RabbitMQ with “--autoreload” option
[英]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.