ImportError do Python 3: nenhum módulo chamado 'ConfigParser'

324

Estou tentando pip installo MySQL-pythonpacote, mas recebo um 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$ 

Alguma ideia?

se __name__ for Nenhum
fonte
o que echo $PATHdiz?
inspectorG4dget
20
Como em 2017 recebo o mesmo erro com python3?
Claudiu Creanga

Respostas:

360

No Python 3, ConfigParserfoi renomeado para configparserconformidade com o PEP 8. Parece que o pacote que você está instalando não suporta Python 3.

Abe Karplus
fonte
77
Corrigir. Atualmente, o MySQL-python não oferece suporte ao Python 3.
Michael Mior
3
Quais são minhas alternativas? Eu tentei o PyMySQL3-0.5, mas é muito complicado, ele trava na primeira chamada de execução.
se __name__ for None
15
@JanBirsa Uma rápida pesquisa no Google encontrou algumas possibilidades: se o PyMySQL não funcionar, existe o OurSQL , o MySQL Connector / Python , uma porta do MySQL-Python e outros.
amigos estão
12
Um alvo em movimento neste, mas eu uso o pip3 instala o mysql-connector. Agora disponível no MySQL para suporte ao python3. A liberação no momento da digitação é 2.1.3.
precisa saber é o seguinte
4
Apenas tentei sudo python3 -m pip install mysql-connectore agora está funcionando. Obrigado pela dica @Longmang
Marco
407

Você pode usar o mysqlclientpacote como um substituto para o MySQL-python. É uma bifurcação de MySQL-pythoncom suporte adicional para Python 3.

Tive sorte com simplesmente

pip install mysqlclient

no meu python3.4 virtualenv depois

sudo apt-get install python3-dev libmysqlclient-dev

que é obviamente específico do ubuntu / debian, mas eu só queria compartilhar meu sucesso :)

Eldamir
fonte
2
No CentOS, execute "yum install python-devel mysql-devel" antes de instalar o mysqlclient.
9788 Joe Cheng #
3
Observe que este é um pacote GPL, portanto, se você usar este módulo, também precisará liberar seu programa com GPL.
Bogdan.mustiata
No Debian , é suficiente instalar o libpython3.5-minimalpacote ( sudo apt-get install libpython3.5-minimal).
Patryk.beza 4/10
2
No OSX, você deve executar "brew install mysql" antes de instalar o mysqlclient.
Ghostishev
Eu usei o pip3 install mysqlclient e funcionou como um encanto! Obrigado!
earnshae
16

Aqui está um código que deve funcionar no Python 2.xe 3.x

Obviamente, você precisará do sixmódulo, mas é quase impossível escrever módulos que funcionem nas duas versões sem seis.

try:
    import configparser
except:
    from six.moves import configparser
sorin
fonte
5
Por que não pular o bloco try e uso apenasfrom six.moves import configparser
Matthias Kuhn
5
-1. O objetivo principal six.movesé "fornecer uma interface consistente" para os módulos renomeados; empacotar importações com a try/ exceptao usar sixderrotas o ponto. Apenas use from six.moves import configparser. Não que seis sejam necessários aqui; você pode substituir from six.moves import configparserpor import ConfigParser as configparserno seu exceptbloco e obter o mesmo resultado sem precisar six.
Mark Amery
@MatthiasKuhn Acho que a intenção era fazer sixapenas um requisito para o Python 2.X, mas não para o Python 3.X.
Martin Thoma
@ MartinThoma Isso derrota o ponto inteiro (como Mark Amery escreveu). Se a verificação try / except estiver em vigor, não há mais motivo para usar six.movese o nome nativo também pode ser usado diretamente para o Python 2.
Matthias Kuhn
13
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py

Em seguida, tente instalar o MYSQL-python novamente. Isso funcionou para mim

Valere
fonte
12

O MySQL-python não é suportado no python3. Em vez disso, você pode usar o mysqlclient

Se você estiver fedora/centos/Red Hatinstalando o seguinte pacote

  1. yum install python3-devel
  2. pip install mysqlclient
Kaushal
fonte
1
raise EnvironmentError ("% s não encontrado"% (mysql_config.path,)) OSError: mysql_config não encontrado
PirateApp
1
@PirateApp possivelmente mysql não está instalado. confira aqui stackoverflow.com/questions/7475223/...
Kaushal
sudo yum install python3-devel Plugins carregados: mais rápidomirror Carregando velocidades de espelho do arquivo de host em cache * base: mirror.web-ster.com * epel: mirrors.cat.pdx.edu * extras: mirror.web-ster.com * ou: mirrors Atualizações do .kernel.org *: mirror.web-ster.com Nenhum pacote python3-devel disponível. Erro: nada a fazer
viru
7

Se você estiver usando o CentOS, precisará 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
fonte
6

A compatibilidade do Python 2/3 configparserpode ser resolvida simplesmente pela sixbiblioteca

from six.moves import configparser
Akif
fonte
6

Faça pip3 install PyMySQLe então pip3 install mysqlclient. Trabalhou para mim

Roy Ash
fonte
5

Eu estava tendo o mesmo problema. Acontece que eu precisava instalar o python3 devel nos meus centos. Primeiro, você precisa procurar o pacote que é compatível com o seu sistema.

yum search python3 | grep devel

Em seguida, instale o pacote como:

yum install -y python3-devel.x86_64

Em seguida, instale o mysqlclient do pip

pip install mysqlclient
Siddhi Kiran Bajracharya
fonte
3

Aprendi mais com a resposta de Valeres:

pip install configparser sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py Em seguida, tente instalar o MYSQL-python novamente. Isso funcionou para mim

Eu sugeriria vincular o arquivo em vez de copiá-lo. É salvar para atualizar. Eu vinculei o arquivo ao /usr/lib/python3/diretório

ǝlpoodooɟƃuooʞ
fonte
2

Experimente esta solução que funcionou bem para mim.

Basicamente, é para reinstalar / atualizar para a versão mais recente do mysql do brew e depois instalar mysqlclientou MySQL-Pythonem global pip3vez de virtualenv pip3.

Em seguida, acessando o virtualenve instale com êxito mysqlclientou MySQL-Python.

Aishwary Dhare
fonte
1

Que tal verificar a versão do Python que você está usando primeiro.

import six
if six.PY2:
    import ConfigParser as configparser
else:
    import configparser
Gideon Kimutai
fonte
1
Isso seria muito simplesfrom six.moves import configparser
Akif
1

Eu corro o kali linux- Rolling e me deparei com esse problema, quando tentei executar o cupp.py no terminal, depois de atualizar para o python 3.6.0. Depois de algumas pesquisas e testes, descobri que mudar ConfigParserpara configparserfuncionou para mim, mas então me deparei com outra questão.

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

Depois de um pouco mais de pesquisa, percebi que o python 3 ConfigParserfoi alterado para configparsermas observe que ele possui um atributo ConfigParser().

Oliver Wahome
fonte
1

Eu estava recebendo o mesmo erro no Mac OS 10, Python 3.7.6 e Django 2.2.7. Quero aproveitar esta oportunidade para compartilhar o que funcionou para mim depois de experimentar várias soluções.

Passos

  1. Connector / Python 8.0.20 instalado para Mac OS a partir do link

  2. Copie as dependências atuais para o arquivo requirements.txt, desative o ambiente virtual atual e o exclua usando;

    crie o arquivo se ainda não tiver sido criado com; touch requirements.txt

    copiar dependência para arquivo; python -m pip3 freeze > requirements.txt

    desativar e excluir o ambiente virtual atual; deactivate && rm -rf <virtual-env-name>

  3. Criou outro ambiente virtual e o ativou usando; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate

  4. Instale dependências anteriores usando; python -m pip3 install -r requirements.txt

DKMDebugin
fonte
-2

Por favor, para ver o que está /usr/bin/pythonapontando

se estiver apontando para python3 or higher mudar parapython2.7

Isso deve resolver o problema.

Eu estava recebendo erro de instalação para todos os pacotes python. A solução e discussão de Abe Karplus me deram a dica do que poderia ser o problema. Lembrei-me de que havia mudado manualmente /usr/bin/pythonde de python2.7para /usr/bin/python3.5, o que realmente estava causando o problema. Uma vez eu revertedo mesmo. Foi resolvido.

Fooo
fonte
4
A reversão para o Python 2 para oferecer suporte MySQL-pythoné um exagero; use a versão Python 3 da biblioteca.
Mark Amery
-3

Isso funcionou para mim

cp /usr/local/lib/python3.5/configparser.py /usr/local/lib/python3.5/ConfigParser.py
MaciejNg
fonte
1
não deveria fazer isso. Veja a resposta de Abe karplus. O ConfigParser foi renomeado para configparser no Python3.
Bob Yoplait