Python 3 ImportError: nessun modulo chiamato 'ConfigParser'


324

Sto provando pip installil MySQL-pythonpacchetto, ma ottengo 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$ 

Qualche idea?


cosa echo $PATHdice
inspector

20
Come mai nel 2017 ottengo lo stesso errore con python3?
Claudiu Creanga,

Risposte:


360

In Python 3, ConfigParserè stato rinominato configparserper conformità PEP 8. Sembra che il pacchetto che si sta installando non supporti Python 3.


77
Corretta. MySQL-python attualmente non supporta Python 3.
Michael Mior il

3
Quali sono le mie alternative? Ho provato PyMySQL3-0.5 ma è molto difettoso, si blocca alla prima esecuzione della chiamata.
se __name__ è Nessuno il

15
@JanBirsa Una rapida ricerca su Google ha trovato alcune possibilità: se PyMySQL non funziona, c'è OurSQL , MySQL Connector / Python , una porta di MySQL-Python e altri.
Abe Karplus,

12
Un obiettivo mobile su questo, ma io uso pip3 install mysql-connettore. Ora disponibile da MySQL per il supporto di python3. il rilascio al momento della digitazione è 2.1.3.
Longmang,

4
Ho appena provato sudo python3 -m pip install mysql-connectore ora funziona. Grazie per il suggerimento @Longmang
Marco

407

Puoi invece usare il mysqlclient pacchetto come sostituto drop-in per MySQL-python. È un fork di MySQL-pythoncon supporto aggiunto per Python 3.

Ho avuto fortuna con semplicemente

pip install mysqlclient

nel mio python3.4 virtualenv dopo

sudo apt-get install python3-dev libmysqlclient-dev

che è ovviamente specifico per Ubuntu / Debian, ma volevo solo condividere il mio successo :)


2
Su CentOS, eseguire "yum install python-devel mysql-devel" prima di installare mysqlclient.
Joe Cheng,

3
Si noti che questo è un pacchetto GPL, quindi se si utilizza questo modulo, è necessario rilasciare anche il programma con GPL.
bogdan.mustiata,

Su Debian è sufficiente installare libpython3.5-minimalpackage ( sudo apt-get install libpython3.5-minimal).
patryk.beza,

2
Su OSX è necessario eseguire "brew install mysql" prima di installare mysqlclient.
ghostishev,

Ho usato pip3 install mysqlclient e ha funzionato come un fascino! Grazie!
guadagna

16

Ecco un codice che dovrebbe funzionare in Python 2.xe 3.x

Ovviamente avrai bisogno del sixmodulo, ma è quasi impossibile scrivere moduli che funzionano in entrambe le versioni senza sei.

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

5
Perché non saltare il blocco try e usare semplicementefrom six.moves import configparser
Matthias Kuhn il

5
-1. Il punto six.movesè di "fornire un'interfaccia coerente" ai moduli rinominati; il wrapping delle importazioni con un try/ exceptquando si utilizza sixsconfigge il punto Basta usare from six.moves import configparser. Non che sei necessario qui; è possibile sostituire from six.moves import configparsercon import ConfigParser as configparsernel exceptblocco e ottenere lo stesso risultato senza necessità six.
Mark Amery,

@MatthiasKuhn Credo che la intenda era di fare sixsolo un requisito per Python 2.X, ma non Python 3.X.
Martin Thoma,

@MartinThoma Questo sconfigge l'intero punto (come ha scritto Mark Amery). Se il controllo try / tranne è attivo, non vi è più motivo di utilizzare six.movese il nome nativo può essere utilizzato direttamente anche per Python 2.
Matthias Kuhn,

13
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py

Quindi provare a installare nuovamente MYSQL-python. Ha funzionato per me


12

MySQL-python non è supportato su python3 invece di questo puoi usare mysqlclient

Se si è fedora/centos/Red Hatinstallato installare il seguente pacchetto

  1. yum install python3-devel
  2. pip install mysqlclient

1
raise EnvironmentError ("% s not found"% (mysql_config.path,)) OSError: mysql_config non trovato
PirateApp

1
@PirateApp probabilmente mysql non è installato. controlla qui stackoverflow.com/questions/7475223/…
Kaushal

sudo yum install python3-devel Plugin caricati: fastmirror Caricamento velocità mirror dal file host memorizzato nella cache * base: mirror.web-ster.com * epel: mirrors.cat.pdx.edu * extra: mirror.web-ster.com * ius: specchi .kernel.org * aggiornamenti: mirror.web-ster.com Nessun pacchetto python3-devel disponibile. Errore: niente da fare
viru,

7

Se si utilizza CentOS, è necessario utilizzare

  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à di Python 2/3 per configparserpuò essere risolta semplicemente dalla sixlibreria

from six.moves import configparser

6

Fare pip3 install PyMySQLe quindi pip3 install mysqlclient. Ha funzionato per me


5

Avevo lo stesso problema. Ho scoperto che dovevo installare python3 devel sul mio centos. Innanzitutto, è necessario cercare il pacchetto compatibile con il proprio sistema.

yum search python3 | grep devel

Quindi, installa il pacchetto come:

yum install -y python3-devel.x86_64

Quindi, installa mysqlclient da pip

pip install mysqlclient

3

Sono andato oltre con la risposta di Valeres:

pip install configparser sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py Quindi prova a installare nuovamente MYSQL-python. Ha funzionato per me

Suggerirei di collegare il file invece di copiarlo. Si salva per aggiornare. Ho collegato il file alla /usr/lib/python3/directory.


2

Prova questa soluzione che ha funzionato bene per me.

Fondamentalmente si tratta di reinstallare / aggiornare all'ultima versione di mysql da brew , e quindi di installare mysqlcliento MySQL-Pythonda global pip3invece di virtualenv pip3.

Quindi accedendo virtualenve installando correttamente mysqlcliento MySQL-Python.


1

che ne dite di controllare prima la versione di Python che state usando?

import six
if six.PY2:
    import ConfigParser as configparser
else:
    import configparser

1
Sarebbe molto semplicefrom six.moves import configparser
Akif

1

Corro kali linux-Rolling e ho riscontrato questo problema, quando ho provato a eseguire cupp.py nel terminale, dopo l'aggiornamento a python 3.6.0. Dopo alcune ricerche e prove ho scoperto che il passaggio ConfigParsera configparserme ha funzionato, ma poi ho riscontrato un altro problema.

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

Dopo un po 'più di ricerca mi sono reso conto che per Python 3 ConfigParserè stato modificato configparserma si noti che ha un attributo ConfigParser().


1

Stavo ottenendo lo stesso errore su Mac OS 10, Python 3.7.6 e Django 2.2.7. Voglio sfruttare questa opportunità per condividere ciò che ha funzionato per me dopo aver provato numerose soluzioni.

passi

  1. Installato Connector / Python 8.0.20 per Mac OS dal collegamento

  2. Copia le dipendenze correnti nel file requisito.txt, disattivato l'env virtuale corrente ed eliminato usando;

    creare il file se non già creato con; touch requirements.txt

    copia dipendenza su file; python -m pip3 freeze > requirements.txt

    disattivare ed eliminare l'attuale ambiente virtuale; deactivate && rm -rf <virtual-env-name>

  3. Creato un altro ambiente virtuale e attivato tramite; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate

  4. Installa le dipendenze precedenti usando; python -m pip3 install -r requirements.txt


-2

Si prega di vedere cosa sta /usr/bin/pythonindicando

se sta puntando a python3 or higher cambiare inpython2.7

Questo dovrebbe risolvere il problema.

Stavo ottenendo un errore di installazione per tutti i pacchetti Python. La soluzione e la discussione di Abe Karplus mi hanno dato il suggerimento su quale potrebbe essere il problema. Poi ho ricordato che avevo cambiato manualmente il /usr/bin/pythonda python2.7a /usr/bin/python3.5, che in realtà stava causando il problema. Una volta io revertedlo stesso. È stato risolto.


4
Il ripristino di Python 2 per il supporto MySQL-pythonè eccessivo; usa invece la versione Python 3 della libreria.
Mark Amery,

-3

Questo ha funzionato per me

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

1
non dovrebbe farlo. Vedi la risposta di Abe karplus. ConfigParser è stato rinominato configparser in Python3.
Bob Yoplait,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.