我已经编写了一个相当大的模块,当我导入它时它会自动编译成.pyc文件。

当我想在解释器中测试模块的功能(例如类方法)时,我使用了reload()包中的imp函数。

问题在于它会重新加载.pyc文件,而不是.py文件。

例如,我尝试在解释器中使用一个函数,发现它无法正常工作,我将对.py文件进行更改。但是,如果我在解释器中重新加载模块,它将重新加载.pyc文件,以便所做的更改不会反射(reflect)在解释器中。我将不得不退出解释器,再次启动它,并使用import加载模块(并从.pyc文件创建.py文件)。或者,我每次都必须删除.pyc文件。

有什么更好的办法吗?例如,要让reload().py文件更喜欢.pyc文件?

这是解释器 session 中的一个异常(exception),它显示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'>

最佳答案

是的。这是您可以使用the -B command line option的东西:

python -B

或使用 PYTHONDONTWRITEBYTECODE environment option:
export PYTHONDONTWRITEBYTECODE=1

这些确保.pyc文件不是一开始就生成的。

关于python - 使python reload()函数从.py而不是.pyc读取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17663726/

10-12 20:56