使 python reload() 函数从 .py 而不是 .pyc 读取

6 python reload imp

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

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

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

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

有没有更好的办法?例如,使reload()喜欢.py的文件在.pyc文件?

这是解释器会话中的一个例外,显示reload()加载.pyc文件。

>>> reload(pdb)
<module 'pdb' from 'pdb.pyc'>
Run Code Online (Sandbox Code Playgroud)

编辑:即使我删除了.pyc文件,.pyc每次使用重新加载时都会创建另一个文件,因此每次使用重新加载时我都必须删除该.pyc文件。

>>> reload(pdb)
<module 'pdb' from 'pdb.py'>
>>> reload(pdb)
<module 'pdb' from 'pdb.pyc'>
Run Code Online (Sandbox Code Playgroud)

dno*_*zay 3

是的。您可以使用命令-B行选项执行以下操作:

python -B
Run Code Online (Sandbox Code Playgroud)

或使用PYTHONDONTWRITEBYTECODE环境选项

export PYTHONDONTWRITEBYTECODE=1
Run Code Online (Sandbox Code Playgroud)

这些确保.pyc首先不会生成文件。