Python 导入熊猫会打断我的os.walk循环

Python 导入熊猫会打断我的os.walk循环,python,pandas,Python,Pandas,我刚刚了解了pandas,并安装了buy now,我的循环在文件中进行迭代,其行为异常。下面是一个最简单的例子,我有一个问题: #!/usr/bin/env python import os PATH=os.environ['HOME']+"/scripts/" for path_, dir_names, file_names in os.walk(PATH): for name in file_names: print(path_+name) 由于文件夹中只有一个文件(即此脚

我刚刚了解了pandas,并安装了buy now,我的循环在文件中进行迭代,其行为异常。下面是一个最简单的例子,我有一个问题:

#!/usr/bin/env python
import os

PATH=os.environ['HOME']+"/scripts/"

for path_, dir_names, file_names in os.walk(PATH):
  for name in file_names:
    print(path_+name)
由于文件夹中只有一个文件(即此脚本),因此输出与预期一致:

/home/scripts/parser.py
但是,如果现在使用
pandas
import os,pandas
)扩展
import os
),文件将打印两次:

/home/scripts/parser.py
/home/scripts/parser.py
我不知道这里发生了什么。我是不是搞砸了安装(apt get install python3 pandas)

编辑:


我不知道这是否相关,但当我导入pandas时,会生成一个
\uuuupycache\uuuuu
文件夹。

这实际上是一个通用的Python东西。此脚本将复制问题,而不复制熊猫:

parser.py:

import tempfile
print 'hello'
其中tempfile是一个标准的python包

现在在bash中运行

$ export PYTHONPATH=.
$ python parser.py
hello
hello
print语句执行两次!发生的情况是parser.py导入tempfile,tempfile尝试导入标准python包“parser”()。但由于“.”(当前目录)位于PYTHONPATH中,因此它会再次导入原始脚本,并额外打印“hello”


故事的寓意:不要将脚本命名为与标准库包相同的名称,也绝对不要乱用PYTHONPATH。

如果您不小心将脚本命名为pandas.py,或者不小心键入了“import os,parser”而不是“import os,pandas”,这就是您会看到的行为。如果这真的是由熊猫引起的,那就太奇怪了。我可以确认我使用了正确的命名。我还创建了几个新文件夹只是为了测试它,它总是一样的。由于我也不认为它是由熊猫本身引起的,我认为可能与我安装它的方式有关。如果你给脚本命名完全不同的名称,你会得到相同的结果吗?哇,这很有效,所以基本上是由于文件名
parser.py
。如果你回答这个问题(可能有解释),我会接受。非常感谢。我打赌你的PYTHONPATH中有$HOME/脚本。这是真的吗?