AttributeError: модуль 'dask' не имеет атрибута 'set_options' - PullRequest
0 голосов
/ 18 марта 2020

Я - ладья ie с использованием Dask, и я установил новую версию 2.12.0 на свой MacBook MacOS High Sierra 10.13.6. Когда я пытаюсь запустить распределенный режим с кодом ниже:

from dask.distributed import Client
c = Client()

я получаю следующее ошибка :

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-1-67101dbde0b6> in <module>()
      1 from dask.distributed import Client
----> 2 c = Client()

~/anaconda3/lib/python3.6/site-packages/distributed/client.py in __init__(self, address, loop, timeout, set_as_default, scheduler_file, security, asynchronous, name, heartbeat_interval, **kwargs)
    554         if set_as_default:
    555             self._previous_get = _globals.get('get')
--> 556             dask.set_options(get=self.get)
    557             self._previous_shuffle = _globals.get('shuffle')
    558             dask.set_options(shuffle='tasks')

AttributeError: module 'dask' has no attribute 'set_options'

Кроме того, если я создаю экземпляр c = Client(set_as_default=False) кластер, кажется, успешно поднимается, потому что я получаю информацию о соединении для панели мониторинга ( см. Это изображение ). Но когда я перемещаюсь по приборной панели, появляется следующая ошибка .

В соответствии с документацией удаление одного кластера машины кажется тривиальным, но я не знаю что может быть не так. Я был бы очень признателен, если бы кто-нибудь помог мне разобраться с этим инцидентом;)

1 Ответ

0 голосов
/ 18 марта 2020

Ваш исходный файл называется dask.py, что приводит к конфликту имен между вашим модулем, dask.py и пакетом dask, причем ваш модуль имеет приоритет в последующих операторах импорта. Поэтому, когда distributed/client.py пытается вызвать dask.set_options, происходит сбой с AttributeError, поскольку ваш модуль не предоставляет эту функцию.

После запуска этого dask.py модуля python кэширует скомпилированный python код Следовательно, даже когда вы переименовали свой модуль во что-то другое, конфликт имени импорта все еще существует. Чтобы решить эту проблему, вы должны удалить каталог __pycache__, после чего вы обнаружите, что ваш модуль выполняется успешно.

...