Python 3 ImportError: Không có mô-đun có tên 'ConfigParser'


324

Tôi cố gắng để pip installcác MySQL-pythongói, nhưng tôi nhận được một 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$ 

Có ý kiến ​​gì không?


những gì hiện echo $PATHtiếng nói?
thanh

20
Làm thế nào đến năm 2017 tôi nhận được cùng một lỗi với python3?
Claudiu Creanga

Câu trả lời:


360

Trong Python 3, ConfigParserđã được đổi tên thành configparsertuân thủ PEP 8. Có vẻ như gói bạn đang cài đặt không hỗ trợ Python 3.


77
Chính xác. MySQL-python hiện không hỗ trợ Python 3.
Michael Mior

3
Lựa chọn thay thế của tôi là gì? Tôi đã thử PyMySQL3-0.5 nhưng nó rất có lỗi, nó gặp sự cố ở lần thực hiện cuộc gọi đầu tiên.
nếu __name__ là Không có

15
@JanBirsa Một tìm kiếm nhanh trên google đã tìm thấy một vài khả năng: nếu PyMySQL không hoạt động, thì có OurQuery , MySQL Connector / Python , một cổng của MySQL-Python và các khả năng khác.
Abe Karplus

12
Một mục tiêu di động trên cái này nhưng tôi sử dụng trình kết nối mysql cài đặt pip3. Hiện có sẵn từ MySQL để hỗ trợ python3. phát hành tại thời điểm gõ là 2.1.3.
Longmang

4
Chỉ cần thử sudo python3 -m pip install mysql-connectorvà bây giờ nó hoạt động. Cảm ơn gợi ý @Longmang
Marco

407

Thay vào đó, bạn có thể sử dụng mysqlclientgói như một sự thay thế thả xuống cho MySQL-python. Nó là một nhánh của MySQL-pythonsự hỗ trợ bổ sung cho Python 3.

Tôi đã có may mắn với đơn giản

pip install mysqlclient

trong ảo python3.4 của tôi sau

sudo apt-get install python3-dev libmysqlclient-dev

rõ ràng là dành riêng cho Ubuntu / debian, nhưng tôi chỉ muốn chia sẻ thành công của mình :)


2
Trên CentOS, hãy chạy "yum install python-devel mysql-devel" trước khi cài đặt mysqlclient.
Joe Cheng

3
Lưu ý rằng đây là gói GPL, vì vậy nếu bạn sử dụng mô-đun này, bạn cũng cần phát hành chương trình của mình với GPL.
bogdan.mustiata

Trên Debian , cài đặt libpython3.5-minimalgói ( sudo apt-get install libpython3.5-minimal) là đủ .
patryk.beza

2
Trên OSX, bạn nên chạy "brew install mysql" trước khi cài đặt mysqlclient.
ghostishev

Tôi đã sử dụng pip3 cài đặt mysqlclient và nó hoạt động như một cơ duyên! Cảm ơn!
kiếm được

16

Đây là một mã nên hoạt động trong cả Python 2.x và 3.x

Rõ ràng là bạn sẽ cần sixmô-đun, nhưng hầu như không thể viết mô-đun hoạt động ở cả hai phiên bản mà không có sáu.

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

5
Tại sao không bỏ qua khối thử và chỉ sử dụngfrom six.moves import configparser
Matthias Kuhn

5
-1. Toàn bộ quan điểm six.moves"cung cấp một giao diện nhất quán" để đổi tên các mô-đun; gói nhập khẩu với một try/ exceptkhi sử dụng sixđánh bại điểm. Chỉ cần sử dụng from six.moves import configparser. Không phải là sáu là cần thiết ở đây; bạn có thể thay thế from six.moves import configparserbằng import ConfigParser as configparsertrong exceptkhối của mình và đạt được kết quả tương tự mà không cần six.
Mark Amery

@MatthiasKuhn Tôi đoán ý định là sixchỉ đưa ra một yêu cầu cho Python 2.X chứ không phải Python 3.X.
Martin Thoma

@MartinThoma Điều này đánh bại toàn bộ điểm (như Mark Amery đã viết). Nếu kiểm tra thử / ngoại trừ tại chỗ, không còn lý do nào để sử dụng six.movesvà tên gốc cũng có thể được sử dụng trực tiếp cho Python 2.
Matthias Kuhn

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

Sau đó thử cài đặt lại MYSQL-python. Điều đó đã làm việc cho tôi


12

MySQL-python không được hỗ trợ trên python3 thay vì điều này bạn có thể sử dụng mysqlclient

Nếu bạn đang fedora/centos/Red Hatcài đặt gói sau

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

1
nâng cao môi
trườngError

1
@PirateApp có thể mysql không cài đặt. kiểm tra tại đây stackoverflow.com/questions/7485223/ cường
Kaushal

sudo yum cài đặt python3-devel Các plugin đã tải: quickmirror Đang tải tốc độ nhân bản từ hostfile được lưu trữ * cơ sở: mirror.web-ster.com * epel: Mirror.cat.pdx.edu * bổ sung: mirror.web-ster.com * ius: mirror .kernel.org * Cập nhật: mirror.web-ster.com Không có gói python3-devel khả dụng. Lỗi: Không có gì để làm
viru

7

Nếu bạn đang sử dụng CentOS, thì bạn cần sử dụng

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

6

Khả năng tương thích của Python 2/3 cho configparsercó thể được giải quyết đơn giản bằng sixthư viện

from six.moves import configparser

6

Làm pip3 install PyMySQLvà sau đó pip3 install mysqlclient. Đã làm cho tôi


5

Tôi đã có cùng một vấn đề. Hóa ra, tôi cần phải cài đặt python3 devel trên centos của tôi. Đầu tiên, bạn cần tìm kiếm gói tương thích với hệ thống của bạn.

yum search python3 | grep devel

Sau đó, cài đặt gói như:

yum install -y python3-devel.x86_64

Sau đó, cài đặt mysqlclient từ pip

pip install mysqlclient

3

Tôi đã nhận được thêm với câu trả lời của Valeres:

Pip cài đặt configparser sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py Sau đó thử cài đặt lại MYSQL-python. Điều đó đã làm việc cho tôi

Tôi sẽ đề nghị liên kết các tập tin thay vì sao chép nó. Đó là lưu để cập nhật. Tôi liên kết các tập tin vào /usr/lib/python3/thư mục.


2

Hãy thử cái này giải pháp mà làm việc tốt cho tôi.

Về cơ bản, đó là cài đặt lại / nâng cấp lên phiên bản mới nhất của mysql từ brew , sau đó cài đặt mysqlclienthoặc MySQL-Pythontừ global pip3thay vìvirtualenv pip3 .

Sau đó truy cập virtualenvvà cài đặt thành công mysqlclienthoặc MySQL-Python.


1

Làm thế nào về việc kiểm tra phiên bản Python bạn đang sử dụng đầu tiên.

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

1
Điều này sẽ đơn giản hơn nhiềufrom six.moves import configparser
Akif

1

Tôi chạy kali linux- Cán và tôi đã gặp vấn đề này, khi tôi thử chạy cupp.py trong thiết bị đầu cuối, sau khi cập nhật lên python 3.6.0. Sau một số nghiên cứu và thử nghiệm tôi thấy rằng việc thay đổi ConfigParserđể configparserlàm việc cho tôi nhưng sau đó tôi lại gặp một vấn đề khác.

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

Sau khi nghiên cứu thêm một chút tôi nhận ra rằng đối với python 3 ConfigParserđược đổi thành configparsernhưng lưu ý rằng nó có một thuộc tính ConfigParser().


1

Tôi đã gặp lỗi tương tự trên Mac OS 10, Python 3.7.6 & Django 2.2.7. Tôi muốn sử dụng cơ hội này để chia sẻ những gì làm việc cho tôi sau khi thử nhiều giải pháp.

Các bước

  1. Đã cài đặt Trình kết nối / Python 8.0.20 cho Mac OS từ liên kết

  2. Sao chép các phụ thuộc hiện tại vào tệp tests.txt, hủy kích hoạt env ảo hiện tại và xóa nó bằng cách sử dụng;

    tạo tập tin nếu chưa được tạo bằng; touch requirements.txt

    sao chép phụ thuộc vào tập tin; python -m pip3 freeze > requirements.txt

    hủy kích hoạt và xóa env ảo hiện tại; deactivate && rm -rf <virtual-env-name>

  3. Tạo một env ảo khác và kích hoạt nó bằng cách sử dụng; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate

  4. Cài đặt các phụ thuộc trước đó bằng cách sử dụng; python -m pip3 install -r requirements.txt


-2

Vui lòng xem những gì đang /usr/bin/pythonchỉ vào

nếu nó được chỉ để python3 or higher thay đổi thànhpython2.7

Điều này sẽ giải quyết vấn đề.

Tôi đã nhận được lỗi cài đặt cho tất cả các gói python. Giải pháp & thảo luận của Abe Karplus cho tôi gợi ý về những gì có thể là vấn đề. Sau đó, tôi nhớ lại rằng tôi đã tự thay đổi /usr/bin/pythontừ python2.7thành /usr/bin/python3.5, điều thực sự gây ra vấn đề. Một khi tôi revertedcũng vậy. Nó đã được giải quyết.


4
Hoàn nguyên về Python 2 để hỗ trợ MySQL-pythonlà quá mức cần thiết; sử dụng phiên bản Python 3 của thư viện thay thế.
Mark Amery

-3

Điều này làm việc cho tôi

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

1
không nên làm vậy Xem câu trả lời từ Abe karplus. ConfigParser đã được đổi tên thành configparser trong Python3.
Bob Yoplait
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.