我从主文件夹启动IPython /project.现在,如果我在文件中进行更改/project/tests/some_module.py,则无法在IPython中自动重载更改.另外,在保存更改并希望在提示符中运行其他脚本后,我收到以下消息:
[autoreload of some_module failed: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/IPython/extensions/autoreload.py", line 229, in check
    superreload(m, reload, self.old_objects)
ImportError: No module named some_module]
它似乎检测到文件夹内的更改,/tests但无法导入它.有人可以帮我弄这个吗?
编辑: 
为了更好地说明:我从主文件夹中的终端启动IPython.在这个文件夹中,我有另一个文件夹tests.里面tests我有两个python文件:
some_module.py:
def hello_world():
  print "Hello World!!!"
use_some_module.py:
from some_module import hello_world
hello_world()
一旦我启动IPython,some_module.py中的进一步更改将不会在IPython中加载.例如,如果我print "Hello Earth!!!"在定义hello_world()和运行中添加第二个run tests/use_some_module.py,我会收到上面显示的错误消息,并且只会获得"Hello World!!!"打印.
Edit2:我想要一个解决方案,我不需要更改工作目录,也不需要手动添加任何搜索路径.我想让它自动加载自动加载.
如果您需要的只是在 Python 中重新加载已更改的文件,只需执行以下操作:
from main import some_module
....
reload(some_module)
但是,如果您的重新加载目的确实很迫切,您可以执行以下操作(取自此问题):
%load_ext autoreload
%autoreload 2
前面的代码每次在执行新行之前都会重新加载所有更改的模块。
注意:您还可以检查dreload,它会递归地重新加载模块,以及%run,它允许您运行任何 python 脚本并将其所有数据直接加载到交互式命名空间中。
希望能帮助到你,