Не следует ли попытаться: __import__ в __init__ повторно вызвать оригинальное исключение? - PullRequest
0 голосов
/ 23 ноября 2018

Это сбивает с толку, когда 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...