Python 3 ImportError: Brak modułu o nazwie „ConfigParser”


324

Staram się pip installna MySQL-pythonopakowaniu, ale pojawia się 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$ 

Jakieś pomysły?


co echo $PATHpowiesz
inspectorG4dget

20
Dlaczego w 2017 roku pojawia się ten sam błąd w python3?
Claudiu Creanga

Odpowiedzi:


360

W Pythonie 3 ConfigParserzmieniono jego nazwę configparserna Zgodność z PEP 8. Wygląda na to, że instalowany pakiet nie obsługuje języka Python 3.


77
Poprawny. Python MySQL obecnie nie obsługuje Python 3.
Michael Mior

3
Jakie są moje alternatywy? Próbowałem PyMySQL3-0.5, ale jest bardzo wadliwy, zawiesza się przy pierwszym wywołaniu.
jeśli __nazwa__ to Brak

15
@JanBirsa Szybkie wyszukiwanie w Google znalazło kilka możliwości: jeśli PyMySQL nie działa, istnieje OurSQL , MySQL Connector / Python , port MySQL-Python i inne.
Abe Karplus,

12
Ruchomy cel na tym, ale używam pip3 install mysql-connector. Teraz dostępny z MySQL do obsługi python3. wersja w momencie pisania to 2.1.3.
Longmang

4
Właśnie wypróbowałem sudo python3 -m pip install mysql-connectori teraz działa. Dzięki za podpowiedź @Longmang
Marco

407

Zamiast tego możesz użyć tego mysqlclientpakietu jako zastępczego zamiennika dla MySQL-python. Jest to rozwidlenie MySQL-pythonz dodatkową obsługą Python 3.

Po prostu miałem szczęście

pip install mysqlclient

w moim python3.4 virtualenv później

sudo apt-get install python3-dev libmysqlclient-dev

co jest oczywiście specyficzne dla Ubuntu / Debian, ale chciałem tylko podzielić się moim sukcesem :)


2
W systemie CentOS uruchom „yum install python-devel mysql-devel” przed zainstalowaniem mysqlclient.
Joe Cheng,

3
Pamiętaj, że jest to pakiet GPL, więc jeśli używasz tego modułu, musisz również wydać swój program wraz z GPL.
bogdan.mustiata

W Debianie wystarczy zainstalować libpython3.5-minimalpakiet ( sudo apt-get install libpython3.5-minimal).
patryk.beza

2
W OSX należy uruchomić „brew install mysql” przed zainstalowaniem mysqlclient.
ghostishev

Użyłem pipys install mysqlclient i działało to jak urok! Dzięki!
earnshae

16

Oto kod, który powinien działać zarówno w Pythonie 2.x, jak i 3.x

Oczywiście będziesz potrzebować sixmodułu, ale prawie niemożliwe jest napisanie modułów, które działają w obu wersjach bez sześciu.

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

5
Dlaczego nie pominąć bloku try i po prostu użyćfrom six.moves import configparser
Matthias Kuhn

5
-1. Chodzi o six.movesto, by „zapewnić spójny interfejs” modułom o zmienionych nazwach; zawijanie importu za pomocą try/ exceptpodczas używania sixpokonuje punkt. Po prostu użyj from six.moves import configparser. Nie potrzeba tu sześciu; można wymienić from six.moves import configparserze import ConfigParser as configparserw swoim exceptbloku i osiągnąć ten sam efekt bez potrzeby six.
Mark Amery

@MatthiasKuhn Wydaje mi się, że zamierzeniem było wprowadzenie sixtylko wymogu dla Python 2.X, ale nie Python 3.X.
Martin Thoma,

@MartinThoma To pokonuje cały punkt (jak napisał Mark Amery). Jeśli sprawdzono try / try, nie ma już żadnego powodu, aby użyć six.movesnatywnej nazwy, a także można użyć bezpośrednio w Pythonie 2.
Matthias Kuhn

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

Następnie spróbuj ponownie zainstalować python MYSQL. To działało dla mnie


12

Python MySQL nie jest obsługiwany w python3 zamiast tego można użyć mysqlclient

Jeśli fedora/centos/Red Hatinstalujesz następujący pakiet

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

1
podnieść EnvironmentError ("Nie znaleziono% s"% (mysql_config.path,)) OSError: nie znaleziono mysql_config
PirateApp

1
@ PirateApp prawdopodobnie mysql nie jest zainstalowany. sprawdź tutaj stackoverflow.com/questions/7475223/…
Kaushal

sudo yum zainstaluj python3-devel Załadowane wtyczki: najszybszy błąd Ładowanie prędkości lustra z buforowanego pliku hosta * podstawa: mirror.web-ster.com * epel: mirrors.cat.pdx.edu * dodatki: mirror.web-ster.com * ius: mirrors .kernel.org * aktualizacje: mirror.web-ster.com Brak dostępnego pakietu python3-devel. Błąd: Nic nie rób
viru

7

Jeśli używasz CentOS, musisz użyć

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

6

Zgodność Pythona 2/3 configparsermożna rozwiązać po prostu za pomocą sixbiblioteki

from six.moves import configparser

6

Zrób pip3 install PyMySQLi wtedy pip3 install mysqlclient. Pracował dla mnie


5

Miałem ten sam problem. Okazuje się, że musiałem zainstalować Python3 devel na moim centos. Najpierw musisz wyszukać pakiet zgodny z Twoim systemem.

yum search python3 | grep devel

Następnie zainstaluj pakiet jako:

yum install -y python3-devel.x86_64

Następnie zainstaluj mysqlclient z pip

pip install mysqlclient

3

Dotarłem dalej z odpowiedzią Valeres:

pip install configparser sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py Następnie spróbuj ponownie zainstalować python MYSQL. To działało dla mnie

Sugerowałbym połączyć plik zamiast go skopiować. Zapisz, aby zaktualizować. Podłączyłem plik do /usr/lib/python3/katalogu.


2

Wypróbuj to rozwiązanie, które działało dobrze dla mnie.

Zasadniczo jest to ponowna instalacja / aktualizacja do najnowszej wersji mysql z brew , a następnie instalacja mysqlclientlub MySQL-Pythonz global pip3zamiast virtualenv pip3.

Następnie uzyskując dostęp do virtualenvi pomyślnie zainstalować mysqlclientlub MySQL-Python.


1

co powiesz na sprawdzenie najpierw używanej wersji Pythona?

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

1
To byłoby bardzo prostefrom six.moves import configparser
Akif

1

Uruchomiłem Kali Linux-Rolling i napotkałem ten problem, kiedy próbowałem uruchomić cupp.py w terminalu, po aktualizacji do Pythona 3.6.0. Po kilku badań i prób znalazłem, że zmiana ConfigParserdo configparserpracował dla mnie, ale potem natknąłem innego problemu.

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

Po nieco dalszych badaniach zdałem sobie sprawę, że w Pythonie 3 ConfigParserzmieniono na, configparserale zauważ, że ma on atrybut ConfigParser().


1

Otrzymałem ten sam błąd w systemie Mac OS 10, Python 3.7.6 i Django 2.2.7. Chcę skorzystać z tej okazji, aby podzielić się tym, co dla mnie zadziałało po wypróbowaniu wielu rozwiązań.

Kroki

  1. Zainstalowano Connector / Python 8.0.20 dla Mac OS z linku

  2. Skopiuj bieżące zależności do pliku wymagania.txt, dezaktywuj obecną wirtualną env i usuń ją za pomocą;

    utwórz plik, jeśli jeszcze go nie utworzono; touch requirements.txt

    kopiowanie zależności do pliku; python -m pip3 freeze > requirements.txt

    dezaktywuj i usuń bieżącą wirtualną środowisko; deactivate && rm -rf <virtual-env-name>

  3. Utworzył inną wirtualną env i aktywował ją za pomocą; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate

  4. Zainstaluj poprzednie zależności za pomocą; python -m pip3 install -r requirements.txt


-2

Łaskawie zobaczyć, na co /usr/bin/pythonwskazuje

jeśli wskazuje na python3 or higher zmianę napython2.7

To powinno rozwiązać problem.

Pojawił się błąd instalacji dla wszystkich pakietów Pythona. Rozwiązanie i dyskusja Abe Karplusa dały mi wskazówkę co do problemu. Potem przypomniałem sobie, że ręcznie zmieniłem /usr/bin/pythonz python2.7na /usr/bin/python3.5, co w rzeczywistości było przyczyną problemu. Kiedyś tak revertedsamo. Zostało rozwiązane.


4
Powrót do obsługi języka Python 2 MySQL-pythonto przesada; zamiast tego użyj wersji biblioteki Python 3.
Mark Amery

-3

To zadziałało dla mnie

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

1
nie powinien tego robić. Zobacz odpowiedź Abe karplusa. Nazwa ConfigParser została zmieniona na configparser w Python3.
Bob Yoplait
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.