Python 3 ImportError: aucun module nommé 'ConfigParser'

324

J'essaye pip installle MySQL-pythonpaquet, mais j'obtiens un 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$ 

Des idées?

si __name__ est Aucun
la source
que echo $PATHdit-on?
inspectorG4dget
20
Comment se fait-il qu'en 2017 j'obtienne la même erreur avec python3?
Claudiu Creanga

Réponses:

360

En Python 3, ConfigParsera été renommé pour configparserêtre conforme à PEP 8. Il semble que le package que vous installez ne prend pas en charge Python 3.

Abe Karplus
la source
77
Correct. MySQL-python ne prend actuellement pas en charge Python 3.
Michael Mior
3
Quelles sont mes alternatives? J'ai essayé PyMySQL3-0.5 mais son très buggé, il plante au premier appel.
si __name__ est Aucun
15
@JanBirsa Une recherche rapide sur Google a trouvé quelques possibilités: si PyMySQL ne fonctionne pas, il y a OurSQL , MySQL Connector / Python , un port de MySQL-Python , et d'autres.
Abe Karplus
12
Une cible mobile sur celui-ci mais j'utilise pip3 install mysql-connector. Maintenant disponible à partir de MySQL pour la prise en charge de python3. la version au moment de la frappe est 2.1.3.
Longmang
4
Je viens d'essayer sudo python3 -m pip install mysql-connectoret maintenant ça marche. Merci pour l'indice @Longmang
Marco
407

Vous pouvez à la place utiliser le mysqlclientpackage comme remplacement de remplacement pour MySQL-python. C'est un fork de MySQL-pythonavec un support supplémentaire pour Python 3.

J'ai eu de la chance avec simplement

pip install mysqlclient

dans mon virtualenv python3.4 après

sudo apt-get install python3-dev libmysqlclient-dev

qui est évidemment spécifique à ubuntu / debian, mais je voulais juste partager mon succès :)

Eldamir
la source
2
Sur CentOS, exécutez "yum install python-devel mysql-devel" avant d'installer mysqlclient.
Joe Cheng
3
Notez qu'il s'agit d'un package GPL, donc si vous utilisez ce module, vous devez également publier votre programme avec GPL.
bogdan.mustiata
Sur Debian, il suffit d'installer libpython3.5-minimalpackage ( sudo apt-get install libpython3.5-minimal).
patryk.beza
2
Sur OSX, vous devez exécuter "brew install mysql" avant d'installer mysqlclient.
ghostishev
J'ai utilisé pip3 install mysqlclient et cela a fonctionné comme un charme! Merci!
Earnshae
16

Voici un code qui devrait fonctionner à la fois dans Python 2.x et 3.x

Évidemment, vous aurez besoin du sixmodule, mais il est presque impossible d'écrire des modules qui fonctionnent dans les deux versions sans six.

try:
    import configparser
except:
    from six.moves import configparser
Sorin
la source
5
Pourquoi ne pas sauter le bloc d'essai et simplement utiliserfrom six.moves import configparser
Matthias Kuhn
5
-1. Le but six.movesest de «fournir une interface cohérente» aux modules renommés; encapsuler les importations avec un try/ exceptlors de l'utilisation sixdéfait le point. Utilisez simplement from six.moves import configparser. Pas que six soient nécessaires ici; vous pouvez remplacer from six.moves import configparserpar import ConfigParser as configparserdans votre exceptbloc et obtenir le même résultat sans avoir besoin six.
Mark Amery
@MatthiasKuhn Je suppose que l'intention était de faire sixuniquement une exigence pour Python 2.X, mais pas Python 3.X.
Martin Thoma
@MartinThoma Cela bat tout le point (comme l'a écrit Mark Amery). Si la vérification try / except est en place, il n'y a plus de raison d'utiliser six.moveset le nom natif peut également être utilisé directement pour Python 2.
Matthias Kuhn
13
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py

Essayez ensuite de réinstaller MYSQL-python. Cela a fonctionné pour moi

Valere
la source
12

MySQL-python n'est pas pris en charge sur python3 au lieu de cela, vous pouvez utiliser mysqlclient

Si vous êtes sur l' fedora/centos/Red Hatinstallation du package suivant

  1. yum install python3-devel
  2. pip install mysqlclient
Kaushal
la source
1
lever EnvironmentError ("% s not found"% (mysql_config.path,)) OSError: mysql_config not found
PirateApp
1
@PirateApp peut-être que mysql n'est pas installé. vérifier ici stackoverflow.com/questions/7475223/…
Kaushal
sudo yum install python3-devel Plugins chargés: rapidmirror Chargement des vitesses du miroir à partir du fichier hôte mis en cache * base: mirror.web-ster.com * epel: mirrors.cat.pdx.edu * extras: mirror.web-ster.com * ius: mirrors .kernel.org * mises à jour: mirror.web-ster.com Aucun paquet python3-devel disponible. Erreur: rien à faire
viru
7

Si vous utilisez CentOS, vous devez utiliser

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

La compatibilité de Python 2/3 pour configparserpeut être résolue simplement par la sixbibliothèque

from six.moves import configparser
Akif
la source
6

Faites pip3 install PyMySQLet ensuite pip3 install mysqlclient. Travaillé pour moi

Roy Ash
la source
5

J'avais le même problème. Il s'avère que j'avais besoin d'installer python3 devel sur mes centos. Tout d'abord, vous devez rechercher le package compatible avec votre système.

yum search python3 | grep devel

Ensuite, installez le package en tant que:

yum install -y python3-devel.x86_64

Ensuite, installez mysqlclient à partir de pip

pip install mysqlclient
Siddhi Kiran Bajracharya
la source
3

Je suis allé plus loin avec la réponse de Valeres:

pip install configparser sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py Essayez ensuite de réinstaller MYSQL-python. Cela a fonctionné pour moi

Je suggère de lier le fichier au lieu de le copier. C'est enregistrer pour mettre à jour. J'ai lié le fichier au /usr/lib/python3/répertoire.

ǝlpoodooɟƃuooʞ
la source
2

Essayez cette solution qui a bien fonctionné pour moi.

Fondamentalement, il s'agit de réinstaller / mettre à niveau la dernière version de mysql à partir de brew , puis d'installer mysqlclientou à MySQL-Pythonpartir global pip3de virtualenv pip3.

Puis accéder à virtualenvet installer avec succès mysqlclientou MySQL-Python.

Aishwary Dhare
la source
1

que diriez-vous de vérifier la version de Python que vous utilisez en premier.

import six
if six.PY2:
    import ConfigParser as configparser
else:
    import configparser
Gideon Kimutai
la source
1
Ce serait beaucoup plus simplefrom six.moves import configparser
Akif
1

J'exécute kali linux-Rolling et je suis tombé sur ce problème, lorsque j'ai essayé d'exécuter cupp.py dans le terminal, après la mise à jour vers python 3.6.0. Après quelques recherches et j'ai trouvé essai que le changement ConfigParserde configparsertravaillé pour moi , mais je suis tombé sur une autre question.

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

Après un peu plus de recherches, j'ai réalisé que pour python 3 ConfigParserest changé en configparsermais notez qu'il a un attribut ConfigParser().

Oliver Wahome
la source
1

J'obtenais la même erreur sur Mac OS 10, Python 3.7.6 et Django 2.2.7. Je veux profiter de cette occasion pour partager ce qui a fonctionné pour moi après avoir essayé de nombreuses solutions.

Pas

  1. Connecteur installé / Python 8.0.20 pour Mac OS à partir du lien

  2. Copiez les dépendances actuelles dans le fichier requirements.txt, désactivez l'environnement virtuel actuel et supprimez-le à l'aide de;

    créer le fichier s'il n'est pas déjà créé avec; touch requirements.txt

    copier la dépendance dans un fichier; python -m pip3 freeze > requirements.txt

    désactiver et supprimer l'environnement virtuel actuel; deactivate && rm -rf <virtual-env-name>

  3. Créé un autre env virtuel et activé en utilisant; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate

  4. Installez les dépendances précédentes en utilisant; python -m pip3 install -r requirements.txt

DKMDebugin
la source
-2

Veuillez voir ce qui /usr/bin/pythonpointe

si elle indique de python3 or higher passer àpython2.7

Cela devrait résoudre le problème.

J'obtenais une erreur d'installation pour tous les packages python. La solution et la discussion d'Abe Karplus m'ont donné une idée de ce qui pourrait être le problème. Ensuite, je me suis rappelé que j'avais modifié manuellement le /usr/bin/pythonde python2.7à /usr/bin/python3.5, ce qui était en fait à l'origine du problème. Une fois que je suis revertedpareil. Cela a été résolu.

Fooo
la source
4
Revenir à Python 2 pour prendre en charge MySQL-pythonest exagéré; utilisez plutôt la version Python 3 de la bibliothèque.
Mark Amery
-3

Cela a fonctionné pour moi

cp /usr/local/lib/python3.5/configparser.py /usr/local/lib/python3.5/ConfigParser.py
MaciejNg
la source
1
ne devrait pas faire ça. Voir la réponse d'Abe karplus. ConfigParser a été renommé configparser en Python3.
Bob Yoplait