Python 3 ImportError: нет модуля с именем 'ConfigParser'

324

Я пытаюсь pip installв MySQL-pythonпакет, но я получаю ImportError.

Jans-MacBook-Pro:~ jan$ /Library/Frameworks/Python.framework/Versions/3.3/bin/pip-3.3 install MySQL-python
Downloading/unpacking MySQL-python
  Running setup.py egg_info for package MySQL-python
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/var/folders/lf/myf7bjr57_jg7_5c4014bh640000gn/T/pip-build/MySQL-python/setup.py", line 14, in <module>
        from setup_posix import get_config
      File "./setup_posix.py", line 2, in <module>
        from ConfigParser import SafeConfigParser
    ImportError: No module named 'ConfigParser'
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "/var/folders/lf/myf7bjr57_jg7_5c4014bh640000gn/T/pip-build/MySQL-python/setup.py", line 14, in <module>

    from setup_posix import get_config

  File "./setup_posix.py", line 2, in <module>

    from ConfigParser import SafeConfigParser

ImportError: No module named 'ConfigParser'

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /var/folders/lf/myf7bjr57_jg7_5c4014bh640000gn/T/pip-build/MySQL-python
Storing complete log in /Users/jan/.pip/pip.log
Jans-MacBook-Pro:~ jan$ 

Любые идеи?

если __name__ Нет
источник
что echo $PATHговорит?
инспектор
20
Почему в 2017 году я получаю ту же ошибку с python3?
Клавдиу Крянгэ

Ответы:

360

В Python 3 ConfigParserбыл переименован configparserдля соответствия требованиям PEP 8. Похоже, что устанавливаемый вами пакет не поддерживает Python 3.

Абе Карплус
источник
77
Верный. MySQL-python в настоящее время не поддерживает Python 3.
Майкл Миор
3
Каковы мои альтернативы? Я попытался PyMySQL3-0.5, но он очень глючит, он падает при первом вызове execute.
если __name__ отсутствует None
15
@JanBirsa Быстрый поиск в Google нашел несколько возможностей: если PyMySQL не работает, есть OurSQL , MySQL Connector / Python , порт MySQL-Python и другие.
Абэ Карплус
12
Движущаяся цель на этом, но я использую pip3 установить MySQL-разъем. Теперь доступно из MySQL для поддержки python3. выпуск во время набора 2.1.3.
Longmang
4
Только что попробовал sudo python3 -m pip install mysql-connectorи теперь работает. Спасибо за подсказку @Longmang
Марко
407

Вместо этого вы можете использовать mysqlclientпакет в качестве замены для MySQL-Python. Это вилка MySQL-pythonс добавленной поддержкой Python 3.

Мне просто повезло

pip install mysqlclient

в моем python3.4 virtualenv после

sudo apt-get install python3-dev libmysqlclient-dev

что явно относится к Ubuntu / Debian, но я просто хотел поделиться своим успехом :)

Eldamir
источник
2
На CentOS запустите «yum install python-devel mysql-devel» перед установкой mysqlclient.
Джо Ченг
3
Обратите внимание, что это пакет GPL, поэтому, если вы используете этот модуль, вам необходимо также выпустить свою программу с GPL.
bogdan.mustiata
На Debian достаточно установить libpython3.5-minimalpackage ( sudo apt-get install libpython3.5-minimal).
patryk.beza
2
В OSX вы должны запустить «brew install mysql» перед установкой mysqlclient.
ghostishev
Я использовал pip3 install mysqlclient, и он работал как шарм! Спасибо!
заработало
16

Вот код, который должен работать в Python 2.x и 3.x

Очевидно, вам понадобится sixмодуль, но практически невозможно написать модули, которые работают в обеих версиях без шести.

try:
    import configparser
except:
    from six.moves import configparser
Сорин
источник
5
Почему бы не пропустить блок try и просто использоватьfrom six.moves import configparser
Matthias Kuhn
5
-1. Весь смысл в six.movesтом, чтобы «обеспечить согласованный интерфейс» для переименованных модулей; упаковка импорт с try/ exceptпри использовании sixпобеждает точку. Просто используйте from six.moves import configparser. Не то, чтобы шесть здесь нужно; Вы можете заменить from six.moves import configparserна import ConfigParser as configparserв своем exceptблоке и достичь того же результата без необходимости six.
Марк Амери
@ MatthiasKuhn Я предполагаю, что целью было сделать sixтолько требование для Python 2.X, но не Python 3.X.
Мартин Тома
@MartinThoma Это побеждает весь смысл (как писал Марк Эмери). Если включена проверка try / Кроме того, нет больше причин для использования, six.movesи собственное имя может использоваться непосредственно для Python 2.
Матиас Кун
13
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py

Затем попробуйте снова установить MYSQL-python. Это сработало для меня

Валере
источник
12

MySQL-python не поддерживается на python3, вместо этого вы можете использовать mysqlclient

Если вы fedora/centos/Red Hatустанавливаете следующий пакет

  1. yum install python3-devel
  2. pip install mysqlclient
Kaushal
источник
1
поднять EnvironmentError ("% s не найден"% (mysql_config.path,)) OSError: mysql_config не найден
PirateApp
1
@PirateApp возможно mysql не устанавливается. проверьте здесь stackoverflow.com/questions/7475223/…
Каушал
sudo yum install python3-devel Загруженные плагины: fastestmirror Загрузка скоростей зеркала из кэшированного хост-файла * base: mirror.web-ster.com * epel: mirrors.cat.pdx.edu * дополнительные функции: mirror.web-ster.com * ius: mirrors .kernel.org * updates: mirror.web-ster.com Нет пакета python3-devel. Ошибка: Ничего делать
Viru
7

Если вы используете CentOS, то вам нужно использовать

  1. yum install python34-devel.x86_64
  2. yum groupinstall -y 'development tools'
  3. pip3 install mysql-connector
  4. pip install mysqlclient
Гаурав Нагпал
источник
6

Совместимость Python 2/3 для configparserможет быть решена просто sixбиблиотекой

from six.moves import configparser
Акиф
источник
6

Делай pip3 install PyMySQLи потом pip3 install mysqlclient. Работал для меня

Рой Эш
источник
5

У меня была такая же проблема. Оказывается, мне нужно было установить python3 devel на мои centos. Во-первых, вам нужно найти пакет, совместимый с вашей системой.

yum search python3 | grep devel

Затем установите пакет как:

yum install -y python3-devel.x86_64

Затем установите mysqlclient из pip

pip install mysqlclient
Сиддхи Киран Байрачарья
источник
3

Я получил еще с ответом Валереса:

pip install configparser sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py Затем попробуйте снова установить MYSQL-python. Это сработало для меня

Я бы предложил связать файл, а не копировать его. Это сохранить для обновления. Я связал файл с /usr/lib/python3/каталогом.

ǝlpoodooɟƃuooʞ
источник
2

Попробуйте это решение, которое отлично сработало для меня.

В основном это переустановка / обновление до последней версии mysql из brew , а затем установка mysqlclientили MySQL-Pythonиз global pip3вместо virtualenv pip3.

Затем доступ к virtualenvи успешно установить mysqlclientили MySQL-Python.

Айшвари Дхаре
источник
1

как насчет проверки версии Python, которую вы используете в первую очередь.

import six
if six.PY2:
    import ConfigParser as configparser
else:
    import configparser
Гидеон Кимутай
источник
1
Это было бы очень простоfrom six.moves import configparser
Акиф
1

Я запускаю kali linux-Rolling и столкнулся с этой проблемой, когда попытался запустить cupp.py в терминале после обновления до python 3.6.0. После некоторых исследований и испытаний я обнаружил, что переход ConfigParserна работу configparserработал на меня, но затем я столкнулся с другой проблемой.

config = configparser.configparser() AttributeError: module 'configparser' has no attribute 'configparser'

После нескольких дополнительных исследований я понял, что для Python 3 ConfigParserизменен на, configparserно обратите внимание, что у него есть атрибут ConfigParser().

Оливер Вахом
источник
1

Я получал ту же ошибку в Mac OS 10, Python 3.7.6 и Django 2.2.7. Я хочу использовать эту возможность, чтобы поделиться тем, что сработало для меня после опробования многочисленных решений.

меры

  1. Установленный Connector / Python 8.0.20 для Mac OS по ссылке

  2. Скопируйте текущие зависимости в файл needs.txt, деактивируйте текущий виртуальный env и удалите его с помощью;

    создать файл, если он еще не создан с помощью; touch requirements.txt

    копировать зависимость в файл; python -m pip3 freeze > requirements.txt

    деактивировать и удалить текущий виртуальный env; deactivate && rm -rf <virtual-env-name>

  3. Создал другой виртуальный env и активировал его используя; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate

  4. Установите предыдущие зависимости, используя; python -m pip3 install -r requirements.txt

DKMDebugin
источник
-2

Пожалуйста, чтобы увидеть, что /usr/bin/pythonуказывает на

если он указывает на python3 or higher изменениеpython2.7

Это должно решить проблему.

Я получаю ошибку установки для всех пакетов Python. Решение и обсуждение Абе Карплюса подсказали мне, в чем может быть проблема. Затем я вспомнил, что вручную изменил значение /usr/bin/pythonс python2.7на на /usr/bin/python3.5, что на самом деле вызывало проблему. Когда-то я revertedтакой же. Это было решено.

Fooo
источник
4
Возвращение к Python 2 для поддержки MySQL-python- это излишне; используйте вместо этого версию библиотеки Python 3.
Марк Амери
-3

Это сработало для меня

cp /usr/local/lib/python3.5/configparser.py /usr/local/lib/python3.5/ConfigParser.py
MaciejNg
источник
1
не должен этого делать. Смотрите ответ от Abe Karplus. ConfigParser был переименован в configparser в Python3.
Боб