当我导入 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 路径中的第一个,所以它将尝试使用错误的文件作为依赖项。如果您想在不更改整个库的情况下对库中的特定文件进行热修补,那么可以利用它的一种方法。
这是一个令人头疼的问题。我有一个包含 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 路径中的第一个,所以它将尝试使用错误的文件作为依赖项。如果您想在不更改整个库的情况下对库中的特定文件进行热修补,那么可以利用它的一种方法。