当我导入 pandas 时,Anaconda python 在目录中执行一个 python 文件

Anaconda python executes a python file in directory when I import pandas

这是一个令人头疼的问题。我有一个包含 Ipython 笔记本和 python 代码的目录。不知何故,当我尝试导入 pandas 其中一个 pandas 文件试图执行时,执行导致导入失败。

[path]$ python
Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul  2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
WARNING: No route found for IPv6 destination :: (no default route?). This affects only IPv6
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/anaconda3/lib/python3.5/site-packages/pandas/__init__.py", line 13, in <module>
    __import__(dependency)
  File "/usr/local/anaconda3/lib/python3.5/site-packages/pytz/__init__.py", line 29, in <module>
    from pkg_resources import resource_stream
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 634, in _load_backward_compatible
  File "/usr/local/anaconda3/lib/python3.5/site-packages/setuptools-20.3-py3.5.egg/pkg_resources/__init__.py", line 71, in <module>
  File "path/parser.py", line 62, in <module>
    file_temp = sys.argv[1]
IndexError: list index out of range

使用 Ipython 而不是 python 出于某种原因:

[path]$ ipython
Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul  2 2016, 17:53:06)
Type "copyright", "credits" or "license" for more information.

IPython 5.0.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import pandas as pd

In [2]:

更奇怪的是,我无法使用此目录中的 jupyter hub 连接到任何内核。

编辑:如果有一个名为 parser.py 的文件,那么在这台机器上的任何地方导入 pandas 似乎都是一个问题。我的笔记本电脑上没有出现该问题。这台机器有 Anaconda 我的笔记本电脑没有。不过,我没有解决问题的方法。

这似乎是 python 如何工作、python 中的路径如何工作以及 python 中的导入如何工作的症状。简短的回答是,您的 python 路径中不能有与从您导入的库中调用的 python 文件同名的文件。这会造成名称冲突,并且因为当前目录位于 python 路径中的第一个,所以它将尝试使用错误的文件作为依赖项。如果您想在不更改整个库的情况下对库中的特定文件进行热修补,那么可以利用它的一种方法。