在emacs Python shell(我正在运行2.*Python)我正在导入我正在使用的.py文件并测试代码.如果我更改代码,但我不知道如何再次导入它.
从我到目前为止的阅读看来
reload(modulename)
应该工作,但似乎没有.
也许只是关闭python shell并重新启动它就足够了,是否有一个命令,或者你只是手动执行它?
编辑:看起来像python-send-defun和python-send-buffer是理想的,但变化似乎没有传播.
虽然reload()
确实有效,但它不会更改对类,函数和其他对象的引用,因此很容易看到旧版本.最一致的解决方案是替换reload()
为exec
(这意味着不import
首先使用)或完全重新启动解释器.
如果您确实想继续使用重新加载,请非常小心如何从该模块引用内容,并始终使用全名.例如import module
,module.name
而不是使用from module import name
.而且,即使小心,你仍然会遇到旧对象的问题,这是一个reload()
不在3.x中的原因.
它似乎对我有用:
创建一个名为test.py的文件(在PYTHONPATH中)
def foo(): print('bar')
然后在emacs python shell(或者更好的是,ipython shell)中输入
>>> import test >>> test.foo() bar
现在修改test.py:
def foo(): print('baz') >>> reload(test)>>> test.foo() baz