Модуль Numba пуст в анаконде - PullRequest
1 голос
/ 13 апреля 2019

Я хотел использовать Numba для запуска кода Python на GPU, поэтому я установил Anaconda, последнюю версию (4.6.12 с Python 3.7).Я пытался загрузить функцию векторизации из numba:

from numba import vectorize

Но я получил код ошибки:

ImportError: cannot import name 'vectorize' from 'numba' 

Модуль установлен, при импорте я не получаю ошибок, но когда я использую команду dir(numba) следующим образом:

import numba

print(dir(numba))

я получаю это:

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'numba']

Я попытался переустановить модуль с помощью команды conda install numba --force-reinstall, но я все ещеполучите ошибку.

1 Ответ

1 голос
/ 13 апреля 2019

Pythons import ищет в разных местах соответствующие модули. (Очень упрощенный) порядок: (1) встроенные C-модули (например, sys) (2) текущий каталог (3) встроенные модули и установленные пакеты 1 .

В вашем случае важно то, что Python обнаружил модуль numba (ваш numba.py 2 ) в текущем каталоге, в котором он не искал установленный модуль numba. Поэтому должно быть достаточно переименовать файл numba.py во что-то другое, например, my_numba.py (и удалите соответствующий файл из каталога __pycache__).

В общем, если вы подозреваете, что импортировали не тот модуль, вы всегда можете проверить атрибут __file__ (у большинства модулей он есть) и проверить, является ли это ожидаемым путем:

import numba
print(numba.__file__)

1 На самом деле все намного сложнее, и можно многое настроить, но здесь это на самом деле не имеет значения.

2 Да, вы можете импортировать текущий модуль сам по себе - но обычно это не рекомендуется ...

...