Это сбивает с толку, когда import pandas
вызывает сообщение вроде:
>>> import pandas
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/raf/anaconda3/lib/python3.7/site-packages/pandas/__init__.py", line 19, in <module>
"Missing required dependencies {0}".format(missing_dependencies))
ImportError: Missing required dependencies ['pytz']
Где на самом деле истинная ошибка не в pytz
, а в отсутствующей библиотеке, необходимой для pytz
:
>>> import pytz
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/raf/anaconda3/lib/python3.7/site-packages/pytz/__init__.py", line 20, in <module>
from pytz.tzinfo import unpickler, BaseTzInfo
File "/home/raf/anaconda3/lib/python3.7/site-packages/pytz/tzinfo.py", line 4, in <module>
from bisect import bisect_right
ImportError: cannot import name 'bisect_right' from 'bisect' (/home/raf/tmp/bisect.py)
Как видите, у меня есть файл с именем bisect.py
в той же папке, где я пытаюсь import pandas
, но сообщение об ошибке, выданное pandas
, не отражает это.В конце концов, это была глупая ошибка, но мне пришлось разбираться с этим.
Отслеживая источник, в pandas/__init__.py
обратите внимание, что исходная ошибка e
не используется после except ImportError as e
.Я думаю, что это должно быть.
for dependency in hard_dependencies:
try:
__import__(dependency)
except ImportError as e:
missing_dependencies.append(dependency)
if missing_dependencies:
raise ImportError(
"Missing required dependencies {0}".format(missing_dependencies))
Здесь также поднимается вопрос: https://github.com/pandas-dev/pandas/issues/23868