Нет модуля с именем '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

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


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 явно что-то не так (ошибка).


это сработало для меня!
Вольфганг

1
sudo apt install python3-django

помог мне


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

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.