Python 3 ImportError: ningún módulo llamado 'ConfigParser'

324

Estoy intentando pip installel MySQL-pythonpaquete, pero obtengo 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$ 

¿Algunas ideas?

si __nombre__ es Ninguno
fuente
que echo $PATHdice
inspectorG4dget
20
¿Cómo es que en 2017 obtengo el mismo error con python3?
Claudiu Creanga el

Respuestas:

360

En Python 3, se le ConfigParserha cambiado el nombre configparserpor cumplimiento de PEP 8. Parece que el paquete que está instalando no es compatible con Python 3.

Abe Karplus
fuente
77
Correcto. MySQL-python actualmente no es compatible con Python 3.
Michael Mior
3
¿Cuales son mis alternativas? Intenté PyMySQL3-0.5 pero es muy defectuoso, se bloquea en la primera llamada de ejecución.
si __name__ es None
15
@ JanBirsa Una búsqueda rápida en Google encontró algunas posibilidades: si PyMySQL no funciona, existe OurSQL , MySQL Connector / Python , un puerto de MySQL-Python y otros.
Abe Karplus
12
Un objetivo móvil en este caso, pero uso pip3 install mysql-connector. Ahora disponible desde MySQL para soporte de python3. lanzamiento al momento de escribir es 2.1.3.
Longmang
44
Solo lo intenté sudo python3 -m pip install mysql-connectory ahora está funcionando. Gracias por la pista @Longmang
Marco
407

En su lugar, puede usar el mysqlclientpaquete como un reemplazo directo para MySQL-python. Es una bifurcación MySQL-pythoncon soporte adicional para Python 3.

Tuve suerte con simplemente

pip install mysqlclient

en mi python3.4 virtualenv después

sudo apt-get install python3-dev libmysqlclient-dev

que obviamente es específico de ubuntu / debian, pero solo quería compartir mi éxito :)

Eldamir
fuente
2
En CentOS, ejecute "yum install python-devel mysql-devel" antes de instalar mysqlclient.
Joe Cheng
3
Tenga en cuenta que este es un paquete GPL, por lo que si usa este módulo, también debe lanzar su programa con GPL.
bogdan.mustiata
En Debian es suficiente instalar el libpython3.5-minimalpaquete ( sudo apt-get install libpython3.5-minimal).
patryk.beza
2
En OSX debe ejecutar "brew install mysql" antes de instalar mysqlclient.
ghostishev
¡Utilicé pip3 install mysqlclient y funcionó de maravilla! ¡Gracias!
Earnshae
16

Aquí hay un código que debería funcionar tanto en Python 2.xy 3.x

Obviamente necesitará el sixmódulo, pero es casi imposible escribir módulos que funcionen en ambas versiones sin seis.

try:
    import configparser
except:
    from six.moves import configparser
Sorin
fuente
55
¿Por qué no omitir el bloque de prueba y simplemente usarfrom six.moves import configparser
Matthias Kuhn
55
-1. El punto de six.moveses "proporcionar una interfaz coherente" a los módulos cambiado de nombre; envolver las importaciones con un try/ exceptcuando se usa sixderrota el punto. Solo úsalo from six.moves import configparser. No es que se necesiten seis aquí; podría reemplazar from six.moves import configparsercon import ConfigParser as configparseren su exceptbloque y lograr el mismo resultado sin necesidad six.
Mark Amery el
@MatthiasKuhn Creo que la intención era hacer sixsolo un requisito para Python 2.X, pero no Python 3.X.
Martin Thoma
@MartinThoma Esto derrota todo el punto (como escribió Mark Amery). Si la verificación try / except está activada, no hay más motivos para usarla six.movesy el nombre nativo también se puede usar directamente para Python 2.
Matthias Kuhn
13
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py

Luego intente instalar el MYSQL-python nuevamente. Que funciono para mi

Valere
fuente
12

MySQL-python no es compatible con python3 en lugar de esto, puede usar mysqlclient

Si está en fedora/centos/Red Hatinstalar el siguiente paquete

  1. yum install python3-devel
  2. pip install mysqlclient
Kaushal
fuente
1
raise EnvironmentError ("% s no encontrado"% (mysql_config.path,)) OSError: mysql_config no encontrado
PirateApp
1
@PirateApp posiblemente mysql no está instalado. consulte aquí stackoverflow.com/questions/7475223/…
Kaushal
sudo yum install python3-devel Complementos cargados: el espejo más rápido Carga de velocidades de espejo desde el archivo host en caché * base: mirror.web-ster.com * epel: mirrors.cat.pdx.edu * extras: mirror.web-ster.com * ius: mirrors .kernel.org * actualizaciones: mirror.web-ster.com No hay paquete python3-devel disponible. Error: nada que hacer
viru
7

Si está usando CentOS, entonces necesita usar

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

La compatibilidad de Python 2/3 configparserse puede resolver simplemente con la sixbiblioteca

from six.moves import configparser
Akif
fuente
6

Hacer pip3 install PyMySQLy luego pip3 install mysqlclient. Trabajó para mi

Roy Ash
fuente
5

Estaba teniendo el mismo problema. Resulta que necesitaba instalar python3 devel en mis centos. Primero, debe buscar el paquete que sea compatible con su sistema.

yum search python3 | grep devel

Luego, instale el paquete como:

yum install -y python3-devel.x86_64

Luego, instale mysqlclient desde pip

pip install mysqlclient
Siddhi Kiran Bajracharya
fuente
3

Llegué más lejos con la respuesta de Valeres:

pip install configparser sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py Luego intente instalar el MYSQL-python nuevamente. Que funciono para mi

Sugeriría vincular el archivo en lugar de copiarlo. Se guarda para actualizar. Enlacé el archivo al /usr/lib/python3/directorio.

ǝlpoodooɟƃuooʞ
fuente
2

Prueba esta solución que funcionó bien para mí.

Básicamente es reinstalar / actualizar a la última versión de mysql desde brew , y luego instalar mysqlcliento MySQL-Pythondesde en global pip3lugar de virtualenv pip3.

Luego, acceda a virtualenve instale con éxito mysqlcliento MySQL-Python.

Aishwary Dhare
fuente
1

¿Qué tal si compruebas la versión de Python que estás usando primero?

import six
if six.PY2:
    import ConfigParser as configparser
else:
    import configparser
Gideon Kimutai
fuente
1
Esto sería mucho simplefrom six.moves import configparser
Akif
1

Ejecuté kali linux-Rolling y me encontré con este problema, cuando intenté ejecutar cupp.py en la terminal, después de actualizar a python 3.6.0. Después de algunas investigaciones y pruebas, descubrí que cambiar ConfigParsera configparserfuncionó para mí, pero luego me encontré con otro problema.

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

Después de investigar un poco más me di cuenta de que para Python 3 ConfigParserse cambia a configparser, pero nota que tiene un atributo ConfigParser().

Oliver Wahome
fuente
1

Recibía el mismo error en Mac OS 10, Python 3.7.6 y Django 2.2.7. Quiero aprovechar esta oportunidad para compartir lo que funcionó para mí después de probar numerosas soluciones.

Pasos

  1. Conector instalado / Python 8.0.20 para Mac OS desde el enlace

  2. Copie las dependencias actuales en el archivo require.txt, desactivó el entorno virtual actual y lo eliminó usando;

    crear el archivo si aún no se ha creado con; touch requirements.txt

    copiar dependencia al archivo; python -m pip3 freeze > requirements.txt

    desactivar y eliminar env virtual actual; deactivate && rm -rf <virtual-env-name>

  3. Creé otro entorno virtual y lo activé usando; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate

  4. Instalar dependencias anteriores usando; python -m pip3 install -r requirements.txt

DKMDebugin
fuente
-2

Amablemente para ver lo que /usr/bin/pythonseñala

si apunta a python3 or higher cambiar apython2.7

Esto debería resolver el problema.

Recibía un error de instalación para todos los paquetes de Python. La solución y la discusión de Abe Karplus me dieron una pista sobre cuál podría ser el problema. Luego recordé que había cambiado manualmente /usr/bin/pythonde python2.7a /usr/bin/python3.5, lo que en realidad estaba causando el problema. Una vez yo revertedlo mismo. Se resolvió.

Fooo
fuente
44
Volver a Python 2 para soportar MySQL-pythones excesivo; use la versión Python 3 de la biblioteca en su lugar.
Mark Amery
-3

Esto funciono para mi

cp /usr/local/lib/python3.5/configparser.py /usr/local/lib/python3.5/ConfigParser.py
MaciejNg
fuente
1
No debería hacer eso. Ver la respuesta de Abe Karplus. ConfigParser ha cambiado de nombre a configparser en Python3.
Bob Yoplait