2012-12-30 21 views
182

Sto provando a pip install il pacchetto MySQL-python, ma ottengo uno ImportError.Python 3 ImportError: nessun modulo denominato 'ConfigParser'

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?

+0

cosa dice '$ path' eco? – inspectorG4dget

+2

Come mai nel 2017 ottengo lo stesso errore con python3? –

risposta

167

In Python 3, ConfigParser è stato rinominato in configparser per conformità PEP 8. Sembra che il pacchetto che stai installando non supporti Python 3.

+35

corretto. MySQL-python al momento non supporta Python 3. –

+2

Quali sono le mie alternative? Ho provato PyMySQL3-0.5 ma è molto bacato, si blocca alla prima chiamata di esecuzione. –

+11

@JanBirsa Una rapida ricerca su google ha trovato alcune possibilità: se [PyMySQL] (https://github.com/petehunt/PyMySQL/) non funziona, c'è [OurSQL] (https://launchpad.net/oursql /), [MySQL Connector/Python] (http://dev.mysql.com/doc/connector-python/en/index.html), [una porta di MySQL-Python] (http://sourceforge.net/ p/mysql-python/discussion/70460/thread/61e3a3c9) e altri. –

259

Puoi invece usare il pacchetto mysqlclient come rimpiazzo per MySQL-python. Si tratta di un fork di MySQL-python con aggiunto il supporto 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 :)

+0

Su CentOS, lancia "yum install python-devel mysql-devel" prima di installare mysqlclient. –

+0

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

+0

Su [* Debian *] (https://en.wikipedia.org/wiki/Debian) è sufficiente installare ['libpython3.5-minimal'] (https://packages.debian.org/search?searchon = names & keywords = libpython3.5-minimal) pacchetto ('sudo apt-get install libpython3.5-minimal'). –

6

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

Ovviamente è necessario il modulo six, ma è quasi impossibile scrivere moduli che funzionino in entrambe le versioni senza sei.

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

Grazie per questo, esattamente quello che stavo cercando. – Routhinator

+3

Perché non saltare il blocco try e basta usare 'from six.moves import configparser' –

+4

-1. L'intero punto di 'six.moves' è quello di [*" fornire un'interfaccia coerente "*] (https://pythonhosted.org/six/#module-six.moves) ai moduli rinominati; avvolgere le importazioni con un 'try' /' except' quando si usa 'six' sconfigge il punto. Basta usare 'da sei.moves import configparser'.Non c'è bisogno di sei qui; si può sostituire 'da sei.moves import configparser' con' import ConfigParser come configparser' nel proprio blocco 'except' e ottenere lo stesso risultato senza bisogno di' six'. –

-2

Gentilmente per vedere cosa è /usr/bin/python punta a

se sta puntando python3 or higher modifica python2.7

Questo dovrebbe risolvere il problema.

Errore di installazione per tutti i pacchetti Python. La soluzione di Abe Karplus nella discussione & mi ha dato l'indizio su quale potrebbe essere il problema. Poi ho ricordato che avevo modificato manualmente il /usr/bin/python da python2.7 a /usr/bin/python3.5, che effettivamente stava causando il problema. Una volta ho reverted lo stesso. È stato risolto.

+2

Il ripristino di Python 2 per supportare 'MySQL-python' è eccessivo; usa invece la versione di Python 3 della libreria. –

-2

Questo ha funzionato per me

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

non dovrebbe farlo. Vedi la risposta di Abe karplus. ConfigParser è stato rinominato in configparser in Python3. –

3

se si utilizza CentOS allora avete bisogno di usare

  1. yum install python34-devel.x86_64

  2. yum groupinstall -y 'sviluppo tools '

  3. pip3 install mysql-connector

  4. pip install mysqlclient

Spero che questo avrebbe funzionato.

6

MySQL-python non è supportato in python3 invece di questo si può usare mysqlclient

Se siete su fedora/centos/Red Hat installare seguente pacchetto

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

che ne dici di controllare il vers ion di Python che stai usando per primo.

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

Questo sarebbe molto semplice 'da sei.moves import configparser' – Akif

+0

Anche questo funziona, breve e preciso –

0

corro kali linux- rotolamento e mi sono imbattuto in questo problema, quando ho provato a fare funzionare cupp.py nel terminale, dopo l'aggiornamento a Python 3.6.0. Dopo alcune ricerche e prove ho scoperto che cambiare ConfigParser a configparser ha funzionato per me, ma poi mi sono imbattuto in un altro problema.

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

Dopo un po 'più di ricerca ho capito che per Python 3 ConfigParser viene modificato in configparser ma nota che esso ha un attributo ConfigParser().

-1

Questo ha funzionato per me.

from ConfigParser import ConfigParser

0

compatibilità di Python 2/3 per configparser può essere risolto semplicemente con six biblioteca

from six.moves import configparser 
Problemi correlati