我写了一个相当大的模块,当我导入它时它会自动编译成一个 .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)
是的。您可以使用命令-B行选项执行以下操作:
python -B
Run Code Online (Sandbox Code Playgroud)
或使用PYTHONDONTWRITEBYTECODE环境选项:
export PYTHONDONTWRITEBYTECODE=1
Run Code Online (Sandbox Code Playgroud)
这些确保.pyc首先不会生成文件。
| 归档时间: |
|
| 查看次数: |
2965 次 |
| 最近记录: |