Python 3 ImportError: Tidak ada modul bernama 'ConfigParser'

324

Saya mencoba untuk pip installyang MySQL-pythonpaket, tapi saya mendapatkan 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$ 

Ada ide?

jika __name__ Tidak Ada
sumber
apa yang echo $PATHdikatakan?
inspectorG4dget
20
Kenapa di 2017 saya mendapatkan kesalahan yang sama dengan python3?
Claudiu Creanga

Jawaban:

360

Dalam Python 3, ConfigParsertelah diubah namanya menjadi configparseruntuk kepatuhan PEP 8. Sepertinya paket yang Anda instal tidak mendukung Python 3.

Abe Karplus
sumber
77
Benar. MySQL-python saat ini tidak mendukung Python 3.
Michael Mior
3
Apa alternatif saya? Saya mencoba PyMySQL3-0.5 tetapi sangat buggy, crash pada panggilan eksekusi pertama.
jika __name__ adalah None
15
@JanBirsa Pencarian google cepat menemukan beberapa kemungkinan: jika PyMySQL tidak berfungsi, ada OurSQL , MySQL Connector / Python , port MySQL-Python , dan lainnya.
Abe Karplus
12
Target yang bergerak satu ini tapi saya menggunakan pip3 install mysql-connector. Sekarang tersedia dari MySQL untuk dukungan python3. rilis pada saat mengetik adalah 2.1.3.
Longmang
4
Baru mencoba sudo python3 -m pip install mysql-connectordan sekarang sudah berfungsi. Terima kasih atas petunjuknya @Longmang
Marco
407

Anda bisa menggunakan mysqlclientpaket sebagai pengganti drop-in untuk MySQL-python. Ini adalah garpu MySQL-pythondengan dukungan tambahan untuk Python 3.

Saya beruntung dengan sederhana

pip install mysqlclient

di virtualenv python3.4 saya setelah

sudo apt-get install python3-dev libmysqlclient-dev

yang jelas khusus untuk ubuntu / debian, tapi saya hanya ingin membagikan kesuksesan saya :)

Eldamir
sumber
2
Pada CentOS, jalankan "yum install python-devel mysql-devel" sebelum menginstal mysqlclient.
Joe Cheng
3
Perhatikan bahwa ini adalah paket GPL, jadi jika Anda menggunakan modul ini, Anda harus merilis program Anda dengan GPL juga.
bogdan.mustiata
Di Debian cukup menginstal libpython3.5-minimalpaket ( sudo apt-get install libpython3.5-minimal).
patryk.beza
2
Pada OSX Anda harus menjalankan "brew install mysql" sebelum menginstal mysqlclient.
ghostishev
Saya menggunakan pip3 install mysqlclient dan itu bekerja seperti pesona! Terima kasih!
Earnshae
16

Berikut ini adalah kode yang harus bekerja di Python 2.x dan 3.x

Jelas Anda akan membutuhkan sixmodul, tetapi hampir mustahil untuk menulis modul yang berfungsi di kedua versi tanpa enam.

try:
    import configparser
except:
    from six.moves import configparser
Sorin
sumber
5
Mengapa tidak melewati coba blok dan gunakan sajafrom six.moves import configparser
Matthias Kuhn
5
-1. Inti dari six.movesadalah untuk "menyediakan antarmuka yang konsisten" untuk modul yang diganti namanya; membungkus impor dengan try/ exceptketika menggunakan sixmengalahkan poin. Gunakan saja from six.moves import configparser. Bukan berarti enam dibutuhkan di sini; Anda dapat mengganti from six.moves import configparserdengan import ConfigParser as configparserdi exceptblok Anda dan mencapai hasil yang sama tanpa perlu six.
Mark Amery
@MatthiasKuhn Saya kira maksudnya adalah untuk membuat sixhanya persyaratan untuk Python 2.X, tetapi tidak Python 3.X.
Martin Thoma
@ MartinThoma Ini mengalahkan seluruh poin (seperti yang ditulis Mark Amery). Jika coba / kecuali cek sudah ada tidak ada alasan lagi untuk digunakan six.movesdan nama asli dapat digunakan langsung untuk Python 2 juga.
Matthias Kuhn
13
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py

Kemudian cobalah untuk menginstal MYSQL-python lagi. Itu berhasil bagi saya

Valere
sumber
12

MySQL-python tidak didukung di python3 selain ini Anda dapat menggunakan mysqlclient

Jika Anda fedora/centos/Red Hatmenginstal paket berikut

  1. yum install python3-devel
  2. pip install mysqlclient
Kaushal
sumber
1
meningkatkan EnvironmentError ("% s not found"% (mysql_config.path,)) OSError: mysql_config tidak ditemukan
PirateApp
1
@PirateApp mungkin mysql tidak diinstal. periksa di sini stackoverflow.com/questions/7475223/...
Kaushal
sudo yum install python3-devel Loaded plugins: tercepatmirror Memuat kecepatan cermin dari cache hostfile * basis: mirror.web-ster.com * epel: mirrors.cat.pdx.edu * ekstra: mirror.web-ster.com * ius: mirror .kernel.org * pembaruan: mirror.web-ster.com Tidak ada paket python3-devel tersedia. Kesalahan: Tidak ada hubungannya
viru
7

Jika Anda menggunakan CentOS, maka Anda perlu menggunakannya

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

Kompatibilitas Python 2/3 untuk configparserdapat diselesaikan hanya dengan sixperpustakaan

from six.moves import configparser
Akif
sumber
6

Lakukan pip3 install PyMySQLdan kemudian pip3 install mysqlclient. Bekerja untukku

Roy Ash
sumber
5

Saya mengalami masalah yang sama. Ternyata, saya perlu menginstal python3 devel pada centos saya. Pertama, Anda perlu mencari paket yang kompatibel dengan sistem Anda.

yum search python3 | grep devel

Kemudian, instal paket sebagai:

yum install -y python3-devel.x86_64

Kemudian, instal mysqlclient dari pip

pip install mysqlclient
Siddhi Kiran Bajracharya
sumber
3

Saya mendapat jawaban Valeres:

pip instal configparser sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py Kemudian coba instal MYSQL-python lagi. Itu berhasil bagi saya

Saya akan menyarankan untuk menautkan file daripada menyalinnya. Simpan untuk memperbarui. Saya menautkan file ke /usr/lib/python3/direktori.

ǝlpoodooɟƃuooʞ
sumber
2

Coba solusi ini yang bekerja dengan baik untuk saya.

Pada dasarnya itu untuk menginstal ulang / meningkatkan ke versi terbaru mysql dari buatan , dan kemudian menginstal mysqlclientatau MySQL-Pythondari global pip3bukan virtualenv pip3.

Kemudian mengakses virtualenvdan berhasil menginstal mysqlclientatau MySQL-Python.

Aishwary Dhare
sumber
1

bagaimana dengan memeriksa versi Python yang Anda gunakan terlebih dahulu.

import six
if six.PY2:
    import ConfigParser as configparser
else:
    import configparser
Gideon Kimutai
sumber
1
Ini akan sangat sederhanafrom six.moves import configparser
Akif
1

Saya menjalankan Kali linux- Rolling dan saya menemukan masalah ini, ketika saya mencoba menjalankan cupp.py di terminal, setelah memperbarui ke python 3.6.0. Setelah beberapa penelitian dan percobaan saya menemukan bahwa perubahan ConfigParserke configparserbekerja untuk saya tapi kemudian saya datang di masalah lain.

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

Setelah sedikit penelitian lebih lanjut saya menyadari bahwa untuk python 3 ConfigParserdiubah menjadi configparsertetapi perhatikan bahwa ia memiliki atribut ConfigParser().

Oliver Wahome
sumber
1

Saya mendapatkan kesalahan yang sama pada Mac OS 10, Python 3.7.6 & Django 2.2.7. Saya ingin menggunakan kesempatan ini untuk membagikan apa yang berhasil bagi saya setelah mencoba berbagai solusi.

Langkah

  1. Connector Terpasang / Python 8.0.20 untuk Mac OS dari tautan

  2. Salin dependensi saat ini ke file requirement.txt, nonaktifkan env virtual saat ini, dan hapus menggunakan;

    buat file jika belum dibuat dengan; touch requirements.txt

    salin ketergantungan ke file; python -m pip3 freeze > requirements.txt

    menonaktifkan dan menghapus env virtual saat ini; deactivate && rm -rf <virtual-env-name>

  3. Membuat env virtual lain dan mengaktifkannya menggunakan; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate

  4. Instal dependensi sebelumnya menggunakan; python -m pip3 install -r requirements.txt

DKMDebugin
sumber
-2

Mohon untuk melihat apa yang /usr/bin/pythonmenunjuk

jika itu menunjuk untuk python3 or higher berubah menjadipython2.7

Ini harus menyelesaikan masalah.

Saya mendapatkan error instal untuk semua paket python. Solusi & diskusi Abe Karplus memberi saya petunjuk tentang apa yang bisa menjadi masalah. Kemudian saya teringat bahwa saya telah secara manual mengubah /usr/bin/pythondari python2.7ke /usr/bin/python3.5, yang sebenarnya menyebabkan masalah. Begitu saya revertedsama. Itu bisa dipecahkan.

Fooo
sumber
4
Mengembalikan ke Python 2 untuk mendukung terlalu MySQL-pythonbanyak; gunakan versi Python 3 dari perpustakaan sebagai gantinya.
Mark Amery
-3

Ini berhasil untuk saya

cp /usr/local/lib/python3.5/configparser.py /usr/local/lib/python3.5/ConfigParser.py
MaciejNg
sumber
1
seharusnya tidak melakukan itu. Lihat jawaban dari Abe karplus. ConfigParser telah diubah namanya menjadi configparser di Python3.
Bob Yoplait