您可以使用以下命令在文件夹中强制使用与pyc2相同的pyc文件布局:
python3 -m compileall -b test3
该选项
-b将
pyc-files的输出触发到其旧位置(即与Python2中的相同)。
之后,您可以通过以下方式再次使用编译后的缓存:
python3 main.pyc
自PEP-3147以来,模块的加载方式一直存在,因此无法
__pycache__按照您希望的方式使用文件夹中的pyc文件:如果没有
*.py-file,
__pycache__则永远不会查找的内容。这是工作流程中最重要的部分:
import foo | | -- > [foo.py exists?] --- NO ----> [foo.pyc exists?] -- NO --> [importError] | | | YESYES |--> [load foo.pyc] | |-> [look up in __pycache__]
这意味着,
__pycache__只有在
*.py可以找到对应的-file时,才查找from中的文件。
显然,以这种方式使用Python 3.X版构建python脚本,并尝试使用另一个Python
3.Y版运行生成的pyc文件将不起作用:不同的Python版本需要不同的pyc文件,这就是后面的全部内容PEP-3147。



