Подтвердить что ты не робот

Ошибка Python: ImportError: невозможно импортировать имя Akismet

Я видел много подобных ошибок, но я не вижу решения, которое относится к моей конкретной проблеме.

Я пытаюсь использовать модуль Akismet, который находится на моем PYTHONPATH, затем, если я запускаю интерактивный интерпретатор, когда я запускаю from akismet import Akismet (как говорит docstring), я получаю следующую ошибку:

from akismet import Akismet
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name Akismet
4b9b3361

Ответ 1

Он будет работать отлично, если ваш PYTHONPATH установлен правильно и глобально (просто проверял его сам).

  • Должен быть установлен в каталог, содержащий "akismet.py", а не путь к файлу! Убедитесь, что вы не используете относительные пути.
  • Обратите внимание, что вам может потребоваться перезагрузка/выход из системы, чтобы применить изменения переменных среды ко всем программам.

Ответ 2

Я просто хочу обратить больше внимания на собственный ответ Доппельгангера на его вопрос. У меня была эта ошибка, и ситуация такова:

Вы пытаетесь импортировать функцию/класс X из модуля с именем say 'strategy.py'.

К сожалению, вы также создали каталог пакетов python под названием "стратегия", другими словами, у вас есть каталог под названием "стратегия", по крайней мере, один файл в "стратегии стратегии", называемый "____ init ___. py".

root folder\
    strategy.py (contains function/class called X)
    strategy\
        __init__.py

Затем вы забудете о том, что создали каталог пакетов python и попытаетесь импортировать некоторый класс или функцию, определенные в файле strategy.py в корневой каталог, например

from strategy import X

То, что вы получаете, это ошибка Python error: ImportError: cannot import name X.

Фактическая проблема, как отмечает Doppelganger, заключается в том, что интерпретатор python имеет приоритет для созданного вами каталога пакета и ищет FILE/MODULE с именем X в каталоге пакета и игнорирует фактический модуль strategy.py, и функции/класса X, которые вы действительно ищете.

Это именно то, что вы ожидаете и хотите, если будете читать документацию на пакетах python, но если вы передумаете на полпути, как и я, вы можете почесать голову.

Ответ 3

Проверьте, действительно ли ваш PYTHONPATH - это то, что вы ожидаете от него, например. сделав это в интерактивной консоли:

In [1]: import sys

In [2]: print sys.path

akismet.py действительно в одной из этих папок?

Ответ 4

У вас должен быть каталог, содержащий каталог "akismet" в вашем пути. Наверное, вы добавили сам каталог "akismet" в $PYTHONPATH.

Когда вы пишете:

from akismet import Akismet

Python пытается открыть файл akismet/Akismet.py где-то в своем пути поиска.

Все это предполагает, что Akismet - это файл, а Akismet - это каталог. Если есть файл akismet.py, каталог, содержащий этот файл, должен быть указан в $PYTHONPATH.

Ответ 5

Простой:

  • Убедитесь, что вы установили akismet (общесистемный или виртуальный)
  • Подтвердить, вставив (import akismet) в оболочку python
  • CD в корневой каталог вашего проекта и запустить (найти. -name akismet.py)
  • Если вы найдете файл с этим именем, посмотрите, можете ли вы его переименовать.
  • Затем запустите (find. -name akismet.pyc -print0 | xargs -0 rm -rf)

Теперь запустите приложение, и вам должно быть хорошо идти.

Ответ 6

Я всегда забываю, что ipython импортирует модули, когда вы используете команду run внутри интерпретатора ipython. Он не будет повторно импортировать любые модули, которые вы измените, поэтому любые новые переменные или функции не будут найдены. Это известная проблема с ipython.

Заключение: избегайте использования run, поскольку он не перезагрузит ваши модули.