Python 3 ImportError: ไม่มีโมดูลชื่อ 'ConfigParser'


324

ฉันพยายามที่จะแพคเกจ แต่ผมได้รับpip installMySQL-pythonImportError

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$ 

ความคิดใด ๆ


สิ่งที่ไม่echo $PATHพูด?
inspectorG4dget

20
มาในปี 2560 ฉันได้รับข้อผิดพลาดเดียวกันกับ python3 ได้อย่างไร
Claudiu Creanga

คำตอบ:


360

ใน Python 3 ConfigParserถูกเปลี่ยนชื่อเป็นเพื่อconfigparserให้สอดคล้องกับ PEP 8 ดูเหมือนว่าแพ็คเกจที่คุณติดตั้งไม่รองรับ Python 3


77
แก้ไข. ขณะนี้ MySQL-python ไม่รองรับ Python 3
Michael Mior

3
ทางเลือกของฉันคืออะไร? ฉันลอง PyMySQL3-0.5 แต่มันบั๊กมากมันก็ล้มเหลวในตอนแรกที่ทำการเรียก
ถ้า __name__ คือไม่มี

15
@JanBirsa การค้นหา google อย่างรวดเร็วพบว่ามีความเป็นไปได้น้อย: ถ้าPyMySQLไม่ทำงานนั่นก็คือOurSQL , MySQL Connector / Python , พอร์ตของ MySQL-Pythonและอื่น ๆ
Abe Karplus

12
เป้าหมายที่เคลื่อนไหวในอันนี้ แต่ฉันใช้ pip3 ติดตั้งตัวเชื่อมต่อ mysql ขณะนี้มีให้จาก MySQL สำหรับการสนับสนุน python3 ปล่อยในเวลาที่พิมพ์คือ 2.1.3
Longmang

4
เพิ่งลองsudo python3 -m pip install mysql-connectorและตอนนี้ก็ใช้งานได้ ขอบคุณสำหรับคำใบ้ @ Longmang
Marco

407

คุณสามารถใช้mysqlclientแพ็คเกจแทนการแทนที่สำหรับ MySQL-python มันเป็นทางแยกของMySQL-pythonด้วยการสนับสนุนเพิ่มเติมสำหรับ Python 3

ฉันมีโชคกับ

pip install mysqlclient

ใน python3.4 virtualenv ของฉันหลังจาก

sudo apt-get install python3-dev libmysqlclient-dev

ซึ่งเห็นได้ชัดว่าเฉพาะกับ ubuntu / debian แต่ฉันต้องการแบ่งปันความสำเร็จของฉัน :)


2
บน CentOS เรียกใช้ "yum install python-devel mysql-devel" ก่อนการติดตั้ง mysqlclient
โจเฉิง

3
โปรดทราบว่านี่เป็นแพ็กเกจ GPL ดังนั้นหากคุณใช้โมดูลนี้คุณจะต้องเผยแพร่โปรแกรมด้วย GPL เช่นกัน
bogdan.mustiata

บนเดเบียนก็เพียงพอที่จะติดตั้งlibpython3.5-minimalแพ็คเกจ ( sudo apt-get install libpython3.5-minimal)
patryk.beza

2
บน OSX คุณควรเรียกใช้ "ชงติดตั้ง mysql" ก่อนติดตั้ง mysqlclient
ghostishev

ฉันใช้ pip3 ติดตั้ง mysqlclient และมันก็ทำงานได้เหมือนมีเสน่ห์! ขอบคุณ!
earnshae

16

นี่คือรหัสที่ควรใช้งานได้ทั้ง Python 2.x และ 3.x

เห็นได้ชัดว่าคุณจะต้องมีsixโมดูล แต่แทบจะเป็นไปไม่ได้ที่จะเขียนโมดูลที่ทำงานได้ทั้งสองเวอร์ชันโดยไม่มีหก

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

5
ทำไมไม่ลองข้ามบล็อคลองและใช้เพียงfrom six.moves import configparser
Matthias Kuhn

5
-1 จุดรวมของsix.movesคือการ"ให้อินเทอร์เฟซที่สอดคล้องกัน"เพื่อเปลี่ยนชื่อโมดูล การห่อการนำเข้าด้วยtry/ exceptเมื่อใช้sixเอาชนะจุด from six.moves import configparserใช้เพียงแค่ ไม่จำเป็นต้องมีหกที่นี่ คุณสามารถแทนที่from six.moves import configparserด้วยimport ConfigParser as configparserของคุณในบล็อกและบรรลุผลเดียวกันโดยไม่จำเป็นexcept six
Mark Amery

@MatthiasKuhn ฉันเดาว่าเจตนาจะทำsixเพียงข้อกำหนดสำหรับ Python 2.X แต่ไม่ใช่ Python 3.X
Martin Thoma

@MartinThoma นี่เป็นการเอาชนะจุดทั้งหมด (ตามที่ Mark Amery เขียนไว้) หากการลอง / ยกเว้นการตรวจสอบอยู่ในสถานที่ไม่มีเหตุผลที่จะใช้six.movesและชื่อพื้นเมืองสามารถใช้โดยตรงสำหรับ Python 2 เช่นกัน
Matthias Kuhn

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

จากนั้นลองติดตั้ง MYSQL-python อีกครั้ง ที่ทำงานให้ฉัน


12

MySQL-python ไม่รองรับ python3 แทนที่จะเป็นแบบนี้คุณสามารถใช้mysqlclient ได้

หากคุณfedora/centos/Red Hatติดตั้งแพ็คเกจต่อไปนี้

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

1
ยกระดับ EnvironmentError ("ไม่พบ% s"% (mysql_config.path,)) OSError: mysql_config ไม่พบ
PirateApp

1
@PirateApp อาจจะไม่ได้ติดตั้ง mysql ตรวจสอบที่นี่stackoverflow.com/questions/7475223/…
Kaushal

sudo yum ติดตั้ง python3-devel โหลดปลั๊กอิน: เร็วที่สุดมิเรอร์กำลังโหลดความเร็วมิเรอร์จากไฟล์โฮสต์แคช * ฐาน: mirror.web-ster.com * ตอนนี้: mirror.cat.pdx.edu พิเศษ: mirror.web-ster.com * ius: mirror .kernel.org * updates: mirror.web-ster.com ไม่มีแพ็คเกจ python3-devel ที่ใช้ได้ ข้อผิดพลาด: ไม่มีอะไรทำ
viru

7

หากคุณใช้ CentOS คุณจะต้องใช้

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

6

ความเข้ากันได้ของ Python 2/3 สำหรับconfigparserสามารถแก้ไขได้ง่ายๆโดยsixห้องสมุด

from six.moves import configparser


5

ฉันมีปัญหาเดียวกัน ปรากฎว่าฉันต้องติดตั้ง python3 devel บน CentOS ของฉัน ก่อนอื่นคุณต้องค้นหาแพ็คเกจที่เข้ากันได้กับระบบของคุณ

yum search python3 | grep devel

จากนั้นติดตั้งแพคเกจเป็น:

yum install -y python3-devel.x86_64

จากนั้นติดตั้ง mysqlclient จาก pip

pip install mysqlclient

3

ฉันได้คำตอบ Valeres เพิ่มเติม:

pip install configparser sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py จากนั้นลองติดตั้ง MYSQL-python อีกครั้ง ที่ทำงานให้ฉัน

ฉันขอแนะนำให้เชื่อมโยงไฟล์แทนการคัดลอก มันเป็นบันทึกเพื่ออัปเดต ฉันเชื่อมโยงไฟล์ไปยัง/usr/lib/python3/ไดเรกทอรี


2

ลองใช้วิธีนี้ซึ่งใช้งานได้ดีสำหรับฉัน

โดยทั่วไปก็คือการติดตั้ง / อัพเกรดเป็นเวอร์ชั่นล่าสุดของMySQLจากเบียร์และจากนั้นติดตั้งmysqlclientหรือMySQL-Pythonจากglobal pip3แทนvirtualenv pip3แทน

จากนั้นการเข้าถึงvirtualenvและประสบความสำเร็จในการติดตั้งหรือmysqlclientMySQL-Python


1

วิธีตรวจสอบเวอร์ชั่นของ Python ที่คุณใช้เป็นอันดับแรก

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

1
นี่จะง่ายมากfrom six.moves import configparser
Akif

1

ฉันใช้ kali linux- Rolling และฉันเจอปัญหานี้เมื่อฉันลองใช้ cupp.py ใน terminal หลังจากอัปเดตเป็น python 3.6.0 หลังจากการวิจัยและทดลองฉันพบว่าการเปลี่ยนแปลง ConfigParserการ configparserทำงานให้ฉัน แต่แล้วฉันก็เจอปัญหาอื่น

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

หลังจากที่บิตเพิ่มเติมวิจัยฉันตระหนักว่าสำหรับหลาม 3 ConfigParserจะเปลี่ยนไป แต่ทราบว่ามันมีแอตทริบิวต์configparser ConfigParser()


1

ฉันได้รับข้อผิดพลาดเดียวกันใน Mac OS 10, Python 3.7.6 และ Django 2.2.7 ฉันต้องการใช้โอกาสนี้เพื่อแบ่งปันสิ่งที่ได้ผลกับฉันหลังจากลองใช้วิธีแก้ปัญหามากมาย

ขั้นตอน

  1. ติดตั้งตัวเชื่อมต่อ / Python 8.0.20 สำหรับ Mac OS จากลิงก์

  2. คัดลอกการอ้างอิงในปัจจุบันลงในไฟล์ requirements.txt ปิดการใช้งาน env เสมือนปัจจุบันและลบออกโดยใช้;

    สร้างไฟล์ถ้ายังไม่ได้สร้างด้วย; touch requirements.txt

    คัดลอกการอ้างอิงไปยังไฟล์; python -m pip3 freeze > requirements.txt

    ปิดใช้งานและลบ env เสมือนปัจจุบัน deactivate && rm -rf <virtual-env-name>

  3. สร้าง env เสมือนใหม่และเปิดใช้งานโดยใช้; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate

  4. ติดตั้งการอ้างอิงก่อนหน้าโดยใช้ python -m pip3 install -r requirements.txt


-2

กรุณาดูว่ามีอะไร /usr/bin/pythonชี้ไป

ถ้ามันชี้ไปที่python3 or higher เปลี่ยนpython2.7

สิ่งนี้ควรแก้ไขปัญหา

ฉันได้รับข้อผิดพลาดในการติดตั้งสำหรับแพ็คเกจหลามทั้งหมด การแก้ปัญหาและการสนทนาของ Abe Karplus ให้คำแนะนำแก่ฉันเกี่ยวกับสิ่งที่อาจเป็นปัญหา จากนั้นฉันจำได้ว่าฉันเปลี่ยน/usr/bin/pythonจากpython2.7ไปเป็นด้วยตนเอง/usr/bin/python3.5ซึ่งจริงๆแล้วเป็นสาเหตุของปัญหา เมื่อฉันrevertedเหมือนกัน มันได้รับการแก้ไข


4
การย้อนกลับไปสู่ ​​Python 2 เพื่อรองรับMySQL-pythonนั้นเป็นเรื่องมากเกินไป ใช้ไลบรารีเวอร์ชัน Python 3 แทน
Mark Amery

-3

สิ่งนี้ใช้ได้สำหรับฉัน

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

1
ไม่ควรทำอย่างนั้น ดูคำตอบจาก Abe karplus ConfigParser ถูกเปลี่ยนชื่อเป็น configparser ใน Python3
Bob Yoplait
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.