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$ 

Будь-які ідеї?


що echo $PATHговорить?
inspectorG4dget

20
Як у 2017 році я отримую таку ж помилку з python3?
Клавдіу Креанга

Відповіді:


360

У Python 3 ConfigParserбуло перейменовано на configparserвідповідність PEP 8. Схоже, пакет, який ви встановлюєте, не підтримує Python 3.


77
Правильно. MySQL-python на даний момент не підтримує Python 3.
Michael Mior

3
Які мої альтернативи? Я спробував PyMySQL3-0.5, але його дуже баггі, він збивається при першому виконанні виклику.
якщо __name__ не вказано

15
@JanBirsa Швидкий пошук в Google знайшов кілька можливостей: якщо PyMySQL не працює, є OurSQL , MySQL Connector / Python , порт MySQL-Python та інші.
Abe Karplus

12
Рухома ціль на цьому, але я використовую pip3 install mysql-connector. Тепер доступний у MySQL для підтримки python3. час випуску на момент набору тексту - 2.1.3.
Лонгманг

4
Просто спробував sudo python3 -m pip install mysql-connectorі зараз це працює. Дякуємо за підказку @Longmang
Marco

407

Ви можете замість цього використовувати mysqlclient пакет як заміну для MySQL-python. Це вилка MySQL-pythonз додатковою підтримкою для Python 3.

Мені пощастило просто

pip install mysqlclient

в моєму python3.4 virtualenv після

sudo apt-get install python3-dev libmysqlclient-dev

що, очевидно, характерно для ubuntu / debian, але я просто хотів поділитися своїм успіхом :)


2
На CentOS запустіть "yum install python-devel mysql-devel" перед встановленням mysqlclient.
Джо Чен

3
Зауважте, що це пакет GPL, тому якщо ви використовуєте цей модуль, вам також слід випустити свою програму разом із GPL.
bogdan.mustiata

На Debian достатньо встановити libpython3.5-minimalпакет ( sudo apt-get install libpython3.5-minimal).
patryk.beza

2
На OSX слід запустити "варити встановити mysql" перед установкою mysqlclient.
ghostishev

Я використовував pip3 install mysqlclient, і це працювало як шарм! Дякую!
заробляти

16

Ось код, який повинен працювати і в Python 2.x і 3.x

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

try:
    import configparser
except:
    from six.moves import configparser

5
Чому б не пропустити пробний блок і просто скористатисяfrom six.moves import configparser
Маттіас Кун

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 Це перемагає всю точку (як писав Марк Амери). Якщо встановлена ​​перевірка / крім перевірки, немає більше причин використовувати, 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

1
підвищити EnvironmentError ("% s не знайдено"% (mysql_config.path,)) OSError: mysql_config не знайдено
PirateApp

1
@PirateApp можливо mysql не встановлюється. перевірити тут stackoverflow.com/questions/7475223/…
Каушал

sudo yum install python3-devel Завантажені плагіни: fastestmirror Завантаження швидкості дзеркала з кешованого файлу хоста * база: mirror.web-ster.com * epel: mirrors.cat.pdx.edu * додатки: mirror.web-ster.com * ius: mirrors .kernel.org * оновлення: 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 на мої центоси. По-перше, потрібно шукати пакет, сумісний з вашою системою.

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/каталогом.


2

Спробуйте це рішення, яке добре працювало для мене.

В основному це необхідно переустановити / оновити до останньої версії MySQL від самогону , а потім встановити 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. Встановлений роз'єм / Python 8.0.20 для Mac OS за посиланням

  2. Скопіюйте поточні залежності у файл вимоги.txt, дезактивувавши поточну віртуальну програму та видаливши її за допомогою;

    створити файл, якщо він ще не створений за допомогою; 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


-2

Ласкаво побачити, на що /usr/bin/pythonвказують

якщо він вказує на python3 or higher змінуpython2.7

Це має вирішити питання.

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


4
Повернення до Python 2 для підтримки MySQL-pythonє надмірним; використовуйте натомість версію бібліотеки Python 3.
Марк Амері

-3

Це працювало для мене

cp /usr/local/lib/python3.5/configparser.py /usr/local/lib/python3.5/ConfigParser.py

1
не повинен цього робити. Дивіться відповідь від Abe karplus. ConfigParser було перейменовано на configparser в Python3.
Боб Йоплайт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.