我已经编写了一个相当大的模块,当我导入它时它会自动编译成.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/