Ошибка после обновления scikit-learn до версии 0.20.1: невозможно импортировать имя «Пусто» из «очереди» - PullRequest
0 голосов
/ 19 декабря 2018

Я обновил scikit-learn до версии 0.20.1, используя anaconda3, после получения сообщения об ошибке balance_accuracy_score из метрик в scikit-learn.Это очевидно недоступно в версии 0.19.

После этого обновления я получаю следующую ошибку:

    Traceback (most recent call last):
  File "test4.py", line 4, in <module>
    from sklearn import metrics
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\__init__.py", line 6
4, in <module>
    from .base import clone
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\base.py", line 13, i
n <module>
    from .utils.fixes import signature
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\utils\__init__.py",
line 14, in <module>
    from . import _joblib
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\utils\_joblib.py", l
ine 22, in <module>
    from ..externals import joblib
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\externals\joblib\__i
nit__.py", line 119, in <module>
    from .parallel import Parallel
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\externals\joblib\par
allel.py", line 28, in <module>
    from ._parallel_backends import (FallbackToBackend, MultiprocessingBackend,
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\externals\joblib\_pa
rallel_backends.py", line 22, in <module>
    from .executor import get_memmapping_executor
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\externals\joblib\exe
cutor.py", line 14, in <module>
    from .externals.loky.reusable_executor import get_reusable_executor
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\externals\joblib\ext
ernals\loky\__init__.py", line 13, in <module>
    from .reusable_executor import get_reusable_executor
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\externals\joblib\ext
ernals\loky\reusable_executor.py", line 11, in <module>
    from .process_executor import ProcessPoolExecutor, EXTRA_QUEUED_CALLS
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\externals\joblib\ext
ernals\loky\process_executor.py", line 82, in <module>
    from .backend.queues import Queue, SimpleQueue, Full
  File "C:\Users\Pieter\Anaconda3\lib\site-packages\sklearn\externals\joblib\ext
ernals\loky\backend\queues.py", line 21, in <module>
    from multiprocessing.queues import Full
  File "C:\Users\Pieter\Anaconda3\lib\multiprocessing\queues.py", line 20, in <m
odule>
    from queue import Empty, Full
ImportError: cannot import name 'Empty' from 'queue' (C:\Users\Pieter\Python pro
gs\queue.py)

1 Ответ

0 голосов
/ 19 декабря 2018

Вы запускаете эту программу с "C:\Users\Pieter\Python progs"?

Похоже, у вас есть файл с именем queue.py в "C:\Users\Pieter\Python pro gs\", который скрывает текущий модуль queue в multiprocessing lib.И отсюда ошибка.

Для этого есть две возможные причины:

  1. Может быть, эта строка:

    from queue import Empty, Full
    

    была добавлена ​​в новой версии, поэтому раньше это делалосьне ошибка, даже если ваш заказ queue.py присутствовал.

  2. Возможно, вы создали свой queue.py недавно после обновления scikit-learn и строка выше всегда присутствовала.В этом случае ошибка должна возникать в обеих версиях.

Переименуйте вашу программу из queue.py и автоматически скомпилируйте queue.pyc во что-то еще, и она должна работать.

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