【发布时间】:2013-07-13 21:03:30
【问题描述】:
我写了一个相当大的模块,当我导入它时它会自动编译成一个 .pyc 文件。
当我想在解释器中测试模块的特性时,例如类方法,我使用 imp 包中的 reload() 函数。
问题在于它重新加载了.pyc 文件,而不是.py 文件。
例如,我在解释器中尝试了一个函数,发现它不能正常工作,我将对.py 文件进行更改。但是,如果我在解释器中重新加载模块,它会重新加载 .pyc 文件,这样更改就不会反映在解释器中。我将不得不退出解释器,重新启动它并使用import 加载模块(并从.py 文件创建.pyc 文件)。或者,我每次都必须删除 .pyc 文件。
有没有更好的方法?例如,让reload() 更喜欢.py 文件而不是.pyc 文件?
这是解释器会话中的一个例外,它显示reload() 加载了.pyc 文件。
>>> reload(pdb)
<module 'pdb' from 'pdb.pyc'>
编辑:
而且即使我删除了.pyc文件,每次使用reload时都会创建另一个.pyc文件,所以我每次使用reload时都必须删除.pyc文件。
>>> reload(pdb)
<module 'pdb' from 'pdb.py'>
>>> reload(pdb)
<module 'pdb' from 'pdb.pyc'>
【问题讨论】:
-
删除
.pyc文件? -
是的,我在帖子中提到过,但是,有时我需要/想用这个模块打开另一个交互式 shell 来尝试一些东西。然后会创建一个新的pyc文件。