Нет модуля с именем 'gdbm'

30

Я только что закончил установку python 3.5.1 на свою Ubuntu, но сталкиваюсь с этим сообщением об ошибке, независимо от того, устанавливаю ли я с Anaconda или с apt-get:

No module named 'gdbm'

это обычно отображается на моем терминале. Я также попытался установить gdbmс помощью:

sudo apt-get install gdbm

но не решает проблему. Могу ли я получить помощь по устранению этой проблемы у кого-либо здесь?

Асогва Чуквуэмека Мартинс
источник
Привет Асогва, не уверен насчет твоего последнего комментария под моим ответом; ты заставил его работать? Пожалуйста, дайте мне знать.
Джейкоб Влейм
Как вы устанавливаете? Ты делаешь это с Анакондой или каким-то другим способом?
Seanny123
Я пока не могу установить Anaconda, потому что когда я хочу установить Anaconda, я получаю ту же ошибку «Нет модуля с именем« gdbm »»
Asogwa Chukwuemeka Martins
Извините, я все еще немного растерялся. Anaconda - это пакет, содержащий Python3. Так вы устанавливаете Anaconda или вы устанавливаете Python3 отдельно.
Seanny123
Я устанавливаю Anaconda
Asogwa Chukwuemeka Martins

Ответы:

30
sudo apt-get install python3.5-gdbm

помог мне

Артур Клесун
источник
4
Конечно, тот же шаблон применяется для Python 3.6.
SteveJ
Что делать в случае Unable to locate package python3.6-gdbm? Я попытался добавить новый репозиторий, но первоначальная ошибка появляется снова.
Карлос
и тот же шаблон для python3.7-gdbmменя
Grijesh Chauhan
Для Python 3.6 используйтеsudo apt-get install python3.6-gdbm
unixeO
28

В моем случае, если бы я попытался выполнить какую-либо команду, которой нет в оболочке bash, я получил бы эту грубую ошибку:

$ programthatdoesntexist
Traceback (most recent call last):
  File "/usr/lib/python3.5/dbm/gnu.py", line 4, in <module>
    from _gdbm import *
ImportError: No module named '_gdbm'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 7, in <module>
    import dbm.gnu as gdbm
  File "/usr/lib/python3.5/dbm/gnu.py", line 6, in <module>
    raise ImportError(str(msg) + ', please install the python3-gdbm package')
ImportError: No module named '_gdbm', please install the python3-gdbm package

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/command-not-found", line 27, in <module>
    from CommandNotFound.util import crash_guard
  File "/usr/lib/python3/dist-packages/CommandNotFound/__init__.py", line 3, in <module>
    from CommandNotFound.CommandNotFound import CommandNotFound
  File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 9, in <module>
    import gdbm
ImportError: No module named 'gdbm'

Ни один из ответов выше не сработал в моем случае. Хотя эта проблема была решена, это может кому-то помочь. Если у вас все еще есть эта проблема, возможно это поможет:

Я установил python3.6 из репозитория ppa.launchpad.net/jonathonf/python-3.6/ubuntu, и, видимо, это сломало некоторые вещи.

При попытке переустановить пакеты command-not-found python3-commandnotfound python3-gdbm python3-gdbm-dbg sessioninstaller, я заметил, что apt извлекает исходники отсюда:

Get:1 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main amd64 python3-gdbm amd64 3.6.5-3~16.04.york0.2 [14.6 kB]

Чтобы решить эту проблему, я просто удалил этот репозиторий:

sed -i ' s/^/#/' /etc/apt/sources.list.d/jonathonf-ubuntu-python-3_6-xenial.list

И затем повторно запустил эту команду (как root):

apt update ; apt purge python3-gdbm ; apt install command-not-found python3-commandnotfound python3-gdbm python3-gdbm-dbg sessioninstaller

Теперь все снова работает:

$ lol
No command 'lol' found, did you mean:
 Command 'sol' from package 'aisleriot' (main)
 Command 'col' from package 'bsdmainutils' (main)
lol: command not found
Chev_603
источник
3
У меня так же было 16.04 LTS. Я думаю, что, глядя на сроки вашего ответа, новое обновление либо в репозитории jonathonf, либо в стандартных репозиториях вызывает конфликт. Так как я все равно перешел на pyenv для своих версий Python, избавление от репозитория jonathonf, вероятно, является хорошей идеей для меня.
Фил
Спасибо. Просто обратите внимание, что люди могут также заметить, что приложение отчета о сбое запускается из-за command-not-foundсбоя.
Jamesc
2
Была такая же проблема, и это решение работало. В то же время python3.6 -m venvбыл сломан для меня. Переход на хранилище deadsnakes решил все мои проблемы. См. Также stackoverflow.com/a/50197283/7599943
Йонас Дальбек
sudo ppa-purge ppa:jonathonf/python-3.6исправил это для меня (он автоматически переустанавливал необходимые пакеты).
JFS
9

Вы пытались установить пакет python3-gdbm

sudo apt-get install python3-gdbm
0x7c0
источник
4
Да, я сделал это, но все равно выдает мне то же сообщение об ошибке.
Асогва Чуквуэмека Мартинс
Это потому, что больше нет названного модуля gdbm. Использование _gdbm.
Матиас Урлич
5

У меня установлен и работает Python 3.6 Я пробовал много вещей, но

sudo apt-get install python3.6-gdbm

У меня эта команда сработала

Вишал Патель
источник
2

У меня была та же проблема, и я решил ее:

sudo apt install python3-gdbm=3.5.1-1
dpkg -L python3-gdbm

запуск synaptic, для чего-то другого, показал, что python3-gdbm нуждается в обновлении. Я позволил synaptic сделать обновление и: теперь я получаю ту же проблему обратно.

При повторном запуске вышеуказанных команд я получаю сообщение в терминале для первой команды: Следующие пакеты будут DOWNGRADED: python3-gdbm. После ответа Y на вопрос, хочу ли я продолжить, traceback снова работает.

Так что в последней версии python3-gdbm явно что-то не так (ошибка).

DEFOSSEZ
источник
это сработало для меня!
Вольфганг
1
sudo apt install python3-django

помог мне

zxdc
источник
4
Привет zxdc, вы можете объяснить свой ответ. Установка django также как-то устанавливает gdbm?
Хи Джин,
1

В зависимости от версии Python, которую вы недавно установили, ОДИН из следующих:

sudo apt-get install python3.5-gdbm
sudo apt-get install python3.6-gdbm
sudo apt-get install python3.7-gdbm
accidentallygivenfuck
источник
0

У меня была эта ошибка, когда я забыл активировать виртуальную среду Python, которая использовалась с командой, которую я пытался запустить (команда tx в моем случае).

Orienteerix
источник