在**主要版本中升级Python**时是否需要删除pyc文件?

在**主要版本中升级Python**时是否需要删除pyc文件?,python,python-venv,pyc,Python,Python Venv,Pyc,TL;DR 如果在采用3.7.0之前在3.6.6和3.7.0之间来回切换,则无需担心,这两组pyc文件将共存,您就可以了 如果在3.6.4和3.6.6之间来回切换会怎么样?您需要删除pyc文件吗 长版本 我发现pyc文件只适用于主要版本。例如,我有: __init__.cpython-36.pyc __init__.cpython-37.pyc 这大概是一个实验的结果 这就足够清楚了。如果我在虚拟环境(比如3.6.6和3.7.0)之间的开发过程中来回移动,就不必担心了。这两个版本将共存于\uu

TL;DR

如果在采用3.7.0之前在3.6.6和3.7.0之间来回切换,则无需担心,这两组pyc文件将共存,您就可以了

如果在3.6.4和3.6.6之间来回切换会怎么样?您需要删除pyc文件吗

长版本

我发现pyc文件只适用于主要版本。例如,我有:

__init__.cpython-36.pyc
__init__.cpython-37.pyc
这大概是一个实验的结果

这就足够清楚了。如果我在虚拟环境(比如3.6.6和3.7.0)之间的开发过程中来回移动,就不必担心了。这两个版本将共存于
\uuuu pycache\uuu
目录中,因为它们由主版本号标识

问题:在3.6.4和3.6.6之间来回切换怎么样?在同一主要版本中从一个版本切换到另一个版本时,我是否确实需要删除pyc文件

问题的动机

我需要切换虚拟环境的原因是,我认为我的代码在某些版本的Python3上运行良好,但在其他版本上运行不好。我得到了大量的帮助

ImportError: No module named XYZ
错误

但是,当我清除所有pyc文件并安装Python或其他任何一种时,就需要建立一个虚拟环境

~/venv-362
~/venv-364
~/venv-366
~/venv-370

然后一切正常,代码运行正常。

.pyc
机器设计为对用户完全透明。特别是,根据,a
.pyc
包含用于编译它的Python版本

因此,尽管您可以清理旧文件,这样就不会有过时的数据不会被使用,但无论如何,它们都不会影响执行

特别是,它们不应导致任何导入错误



这并不意味着在更新时不应该重新生成它们——根据,Python不保证版本之间的字节码兼容性。通常,它们会根据需要重新生成,但如果您没有对相应目录的写入权限,则应在安装期间或之后使用,例如..

Old
。pyc
s不应导致“没有名为XYZ的模块”。你应该在这个问题上构建一个MCVE,然后问一个单独的问题。所以你说“不,如果你从3.6.4移动到3.6.6,你不需要删除pyc文件”;是这样吗?