为什么.pyc文件有时在同一目录中创建,有时在__pycache__子目录中创建?

时间:2013-08-25 07:31:51

标签: python python-2.7 python-3.x

我正在使用Windows 7并安装了Python 2.7.5和3.3.2。我的path环境变量设置为

C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\python27;C:\Python33\Scripts

当我将任何Python模块导入另一个模块时,会创建一个.pyc文件。创建它的地方取决于是调用Python2还是运行Python3。

  • 当我双击模块时,在同一目录中创建.pyc文件
  • 当我通过IDLE编辑然后运行它然后在子目录中创建文件。
  • 如果我在顶部添加#! Python3,则双击会在子目录中生成.pyc文件。

我理解这是因为Python2和Python3决定管理字节编译代码的方式不同。

我目前专注于Python3,并希望仅在子目录中创建文件。

我尝试编辑path变量以在Python 2之前放置Python3,以便调用Python3而不是Python2。即使在更改它之后,当我双击未发生的Python脚本并且在同一目录中创建了字节编译的代码时。

因此Python2用于双击运行Python脚本。导致此行为的原因是如何在不卸载Python2的情况下确保调用Python3而不是Python2?

1 个答案:

答案 0 :(得分:9)

Python 3改变了字节码(.pyc)文件的存储方式。 Python 2使用将它们放在同一目录中的约定,但对于Python 3,开发人员决定通过将它们全部放在一个单独的目录中来减少混乱。这也使CPython以外的Python实现更容易支持,因为每个实现都可以在.pyc目录中拥有自己的__pycache__文件,而不是覆盖其他实现中的文件。

相关问题