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?


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.


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 :)


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

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


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

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

6

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

from six.moves import configparser

6

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


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

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.


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.


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

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().


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


-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.


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

1
ne devrait pas faire ça. Voir la réponse d'Abe karplus. ConfigParser a été renommé configparser en Python3.
Bob Yoplait
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.