Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么.pyc文件有时创建在同一个目录中,有时创建在_pycache__;子目录中?_Python_Python 2.7_Python 3.x - Fatal编程技术网

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

Python 为什么.pyc文件有时创建在同一个目录中,有时创建在_pycache__;子目录中?,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我使用的是Windows7,同时安装了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文件

我使用的是Windows7,同时安装了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
变量,将Python3放在Python2之前,以便调用Python3而不是Python2。即使在我双击Python脚本时更改了它,但这并没有发生,字节编译代码是在同一目录中创建的


因此,Python2被用来在双击时运行Python脚本。是什么导致了这种行为?我如何确保在不卸载Python2的情况下调用Python3而不是Python2?

Python3已更改字节码(
.pyc
)文件的存储方式。Python2使用将它们放在同一目录中的约定,但是对于Python3,开发人员决定将它们全部放在一个单独的目录中,以减少混乱。这也使得对Python以外的Python实现的支持更加容易,因为每个实现都可以在
\uuuu pycache\uuuuu
目录中有自己的
.pyc
文件,而不是覆盖其他实现中的文件。

那么,在我的情况下,为什么双击会在同一目录中生成编译文件,除非我使用的是
#!python3
在顶部?@AshwiniChaudhary,但其中一个声明是我可以在Windows上使用shebang。我还在comp.lang.python上问过这个问题,那里的人告诉我我可以使用它。@asembansal你安装了吗?@AshwiniChaudhary没有。我已经为Python2.7和Python3.3安装了标准Python。具体来说,更改是在Python3.2中,而不是在整个Python3中。