Python 3 ImportError: Kein Modul mit dem Namen 'ConfigParser'

322

Ich versuche pip installdas MySQL-pythonPaket, aber ich bekomme eine 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$ 

Irgendwelche Ideen?

wenn __name__ None ist
quelle
was echo $PATHsagt das
InspectorG4dget
20
Wie kommt es, dass ich 2017 den gleichen Fehler mit Python3 bekomme?
Claudiu Creanga

Antworten:

359

In Python 3 ConfigParserwird umbenannt worden configparserfür PEP 8 Compliance. Es sieht so aus, als ob das von Ihnen installierte Paket Python 3 nicht unterstützt.

Abe Karplus
quelle
77
Richtig. MySQL-Python unterstützt derzeit nicht Python 3.
Michael Mior
3
Was sind meine Alternativen? Ich habe PyMySQL3-0.5 ausprobiert, aber es ist sehr fehlerhaft, es stürzt beim ersten Ausführen des Aufrufs ab.
wenn __name__ None ist
15
@JanBirsa Eine schnelle Google-Suche ergab einige Möglichkeiten: Wenn PyMySQL nicht funktioniert, gibt es OurSQL , MySQL Connector / Python , eine Portierung von MySQL-Python und andere.
Abe Karplus
12
Ein bewegliches Ziel in diesem Fall, aber ich verwende pip3 install mysql-connector. Jetzt bei MySQL für Python3-Unterstützung erhältlich. Die Freigabe zum Zeitpunkt der Eingabe ist 2.1.3.
Longmang
4
Nur versucht sudo python3 -m pip install mysql-connectorund jetzt funktioniert es. Vielen Dank für den Hinweis @Longmang
Marco
407

Sie können das mysqlclientPaket stattdessen als Ersatz für MySQL-Python verwenden. Es ist eine Abzweigung MySQL-pythonmit zusätzlicher Unterstützung für Python 3.

Ich hatte einfach Glück damit

pip install mysqlclient

in meinem python3.4 virtualenv nach

sudo apt-get install python3-dev libmysqlclient-dev

Das ist natürlich spezifisch für Ubuntu / Debian, aber ich wollte nur meinen Erfolg teilen :)

Eldamir
quelle
2
Führen Sie unter CentOS "yum install python-devel mysql-devel" aus, bevor Sie mysqlclient installieren.
Joe Cheng
3
Beachten Sie, dass dies ein GPL-Paket ist. Wenn Sie dieses Modul verwenden, müssen Sie Ihr Programm auch mit GPL freigeben.
Bogdan.mustiata
Unter Debian reicht es aus, libpython3.5-minimalpackage ( sudo apt-get install libpython3.5-minimal) zu installieren .
patryk.beza
2
Unter OSX sollten Sie "brown install mysql" ausführen, bevor Sie mysqlclient installieren.
Ghostishev
Ich habe pip3 verwendet, um mysqlclient zu installieren, und es hat wie ein Zauber funktioniert! Vielen Dank!
Earnshae
16

Hier ist ein Code, der sowohl in Python 2.x als auch in 3.x funktionieren sollte

Natürlich benötigen Sie das sixModul, aber es ist fast unmöglich, Module zu schreiben, die in beiden Versionen ohne sechs funktionieren.

try:
    import configparser
except:
    from six.moves import configparser
Sorin
quelle
5
Warum nicht den Try-Block überspringen und einfach verwendenfrom six.moves import configparser
Matthias Kuhn
5
-1. Der springende Punkt six.movesist, "eine konsistente Schnittstelle" für umbenannte Module bereitzustellen ; Das Umschließen von Importen mit einem try/ exceptbei Verwendung sixbesiegt den Punkt. Einfach benutzen from six.moves import configparser. Nicht dass sechs hier benötigt werden; Sie können ersetzen from six.moves import configparsermit import ConfigParser as configparserim exceptBlock und das gleiche Ergebnis erzielen , ohne dass six.
Mark Amery
@MatthiasKuhn Ich denke, die Absicht war, sixnur eine Anforderung für Python 2.X zu stellen, aber nicht für Python 3.X.
Martin Thoma
@MartinThoma Dies besiegt den ganzen Punkt (wie Mark Amery schrieb). Wenn die Try / Except-Prüfung vorhanden ist, gibt es keinen Grund mehr zu verwenden, six.movesund der native Name kann auch direkt für Python 2 verwendet werden.
Matthias Kuhn
13
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py

Versuchen Sie dann erneut, die MYSQL-Python zu installieren. Das hat bei mir funktioniert

Valere
quelle
12

MySQL-Python wird in Python3 nicht unterstützt. Stattdessen können Sie mysqlclient verwenden

Wenn Sie das fedora/centos/Red Hatfolgende Paket installieren

  1. yum install python3-devel
  2. pip install mysqlclient
Kaushal
quelle
1
erhöhen EnvironmentError ("% s nicht gefunden"% (mysql_config.path,)) OSError: mysql_config nicht gefunden
PirateApp
1
@PirateApp möglicherweise ist MySQL nicht installiert. Überprüfen Sie hier stackoverflow.com/questions/7475223/…
Kaushal
sudo yum install python3-devel Geladene Plugins: schnellster Spiegel Laden von Spiegelgeschwindigkeiten aus der zwischengespeicherten Hostdatei * base: mirror.web-ster.com * epel: mirror.cat.pdx.edu * Extras: mirror.web-ster.com * ius: Mirrors .kernel.org * -Updates: mirror.web-ster.com Kein Paket python3-devel verfügbar. Fehler: Nichts zu tun
viru
7

Wenn Sie CentOS verwenden, müssen Sie verwenden

  1. yum install python34-devel.x86_64
  2. yum groupinstall -y 'development tools'
  3. pip3 install mysql-connector
  4. pip install mysqlclient
Gaurav Nagpal
quelle
6

Die Kompatibilität von Python 2/3 für configparserkann einfach durch die sixBibliothek gelöst werden

from six.moves import configparser
Akif
quelle
6

Mach pip3 install PyMySQLund dann pip3 install mysqlclient. Hat für mich gearbeitet

Roy Ash
quelle
5

Ich hatte das gleiche Problem. Es stellte sich heraus, dass ich python3 devel auf meinen Centos installieren musste. Zunächst müssen Sie nach dem Paket suchen, das mit Ihrem System kompatibel ist.

yum search python3 | grep devel

Installieren Sie dann das Paket wie folgt:

yum install -y python3-devel.x86_64

Installieren Sie dann mysqlclient von pip

pip install mysqlclient
Siddhi Kiran Bajracharya
quelle
3

Ich bin mit Valeres Antwort weitergekommen:

pip install configparser sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py Versuchen Sie dann erneut, die MYSQL-Python zu installieren. Das hat bei mir funktioniert

Ich würde vorschlagen, die Datei zu verknüpfen, anstatt sie zu kopieren. Es ist zum Aktualisieren gespeichert. Ich habe die Datei mit dem /usr/lib/python3/Verzeichnis verknüpft .

ǝlpoodooɟƃuooʞ
quelle
2

Probieren Sie diese Lösung aus, die für mich gut funktioniert hat.

Im Grunde ist es erneut zu installieren ist / Upgrade auf die neueste Version von MySQL aus brauen , und dann zu installieren mysqlclientoder MySQL-Pythonaus global pip3stattvirtualenv pip3 .

Dann auf die zugreifen virtualenvund erfolgreich installieren mysqlclientoder MySQL-Python.

Aishwary Dhare
quelle
1

Wie wäre es, wenn Sie zuerst die Version von Python überprüfen, die Sie verwenden?

import six
if six.PY2:
    import ConfigParser as configparser
else:
    import configparser
Gideon Kimutai
quelle
1
Dies wäre sehr einfachfrom six.moves import configparser
Akif
1

Ich habe kali linux-Rolling ausgeführt und bin auf dieses Problem gestoßen, als ich nach dem Update auf Python 3.6.0 versucht habe, cupp.py im Terminal auszuführen. Nach einigen Recherchen und Versuchen stellte ich fest, dass der Wechsel ConfigParserzu configparserfür mich funktionierte, aber dann stieß ich auf ein anderes Problem.

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

Nach ein wenig mehr Recherche wurde mir klar, dass für Python 3 ConfigParsergeändert wird, configparseraber beachten Sie, dass es ein Attribut hat ConfigParser().

Oliver Wahome
quelle
1

Ich habe den gleichen Fehler unter Mac OS 10, Python 3.7.6 und Django 2.2.7 erhalten. Ich möchte diese Gelegenheit nutzen, um zu teilen, was für mich funktioniert hat, nachdem ich zahlreiche Lösungen ausprobiert habe.

Schritte

  1. Installierter Connector / Python 8.0.20 für Mac OS über Link

  2. Kopieren Sie die aktuellen Abhängigkeiten in die Datei require.txt, deaktivieren Sie die aktuelle virtuelle Umgebung und löschen Sie sie mit.

    Erstellen Sie die Datei, falls nicht bereits mit erstellt. touch requirements.txt

    Kopierabhängigkeit in Datei; python -m pip3 freeze > requirements.txt

    aktuelle virtuelle Umgebung deaktivieren und löschen; deactivate && rm -rf <virtual-env-name>

  3. Erstellt eine andere virtuelle Umgebung und aktiviert sie mit; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate

  4. Installieren Sie frühere Abhängigkeiten mit; python -m pip3 install -r requirements.txt

DKMDebugin
quelle
-2

Bitte sehen Sie, worauf es /usr/bin/pythonankommt

wenn es darauf hinweist, zu python3 or higher ändernpython2.7

Dies sollte das Problem lösen.

Ich habe einen Installationsfehler für alle Python-Pakete erhalten. Die Lösung und Diskussion von Abe Karplus gab mir den Hinweis, was das Problem sein könnte. Dann erinnerte ich mich , dass ich manuell das geändert hatte /usr/bin/pythonaus python2.7zu /usr/bin/python3.5, das ist eigentlich das Problem verursacht wurde. Einmal habe ich reverteddas gleiche. Es wurde gelöst.

Fooo
quelle
4
Das Zurücksetzen auf Python 2 zur Unterstützung MySQL-pythonist übertrieben. Verwenden Sie stattdessen die Python 3-Version der Bibliothek.
Mark Amery
-3

Das hat bei mir funktioniert

cp /usr/local/lib/python3.5/configparser.py /usr/local/lib/python3.5/ConfigParser.py
MaciejNg
quelle
1
sollte das nicht tun. Siehe Antwort von Abe Karplus. ConfigParser wurde in Python3 in configparser umbenannt.
Bob Yoplait