Python 3 ImportError:没有名为“ ConfigParser”的模块


322

我想pip installMySQL-python包,但我得到的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$ 

有任何想法吗?


怎么echo $PATH说呢?
inspectorG4dget

20
2017年怎么会出现python3相同的错误?
Claudiu Creanga

Answers:


360

在Python 3中,ConfigParser已被重命名configparser为PEP 8合规性。您正在安装的软件包似乎不支持Python 3。


77
正确。MySQL的-蟒蛇目前不支持Python的3
迈克尔Mior

3
我有什么选择?我尝试了PyMySQL3-0.5,但是它有很多错误,在第一次执行调用时便崩溃了。
如果__name__为None

15
@JanBirsa一个快速的Google搜索发现了一些可能性:如果PyMySQL不起作用,则有OurSQLMySQL Connector / PythonMySQL-Python的端口等。
安倍·卡普拉斯

12
一个移动的目标,但我使用pip3 install mysql-connector。现在可以从MySQL获得python3支持。打字时的版本是2.1.3。
Longmang

4
刚刚尝试过sudo python3 -m pip install mysql-connector,现在可以正常工作了。感谢您的提示@Longmang
Marco 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上,在安装mysqlclient之前运行“ yum install python-devel mysql-devel”。
Joe Cheng

3
请注意,这是一个GPL软件包,因此,如果您使用此模块,则还需要使用GPL发行程序。
bogdan.mustiata

Debian上安装libpython3.5-minimal软件包(sudo apt-get install libpython3.5-minimal)就足够了。
patryk.beza

2
在OSX上,应在安装mysqlclient之前运行“ brew install mysql”。
ghostishev

我用pip3 install mysqlclient,它像一个魅力!谢谢!
Earnshae

16

这是一个在Python 2.x和3.x中均应适用的代码

显然,您将需要该six模块,但是几乎不可能编写在两个版本中都没有六个版本的模块。

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

5
为什么不跳过try块而只使用from six.moves import configparser
Matthias Kuhn,2015年

5
-1。重点six.moves是为重命名的模块“提供一致的接口”。在使用try/ 包裹导入except时会six失败。只需使用from six.moves import configparser。这里不需要六个;您可以在块中替换from six.moves import configparserimport ConfigParser as configparserexcept而无需获得相同的结果six
Mark Amery

@MatthiasKuhn我想打算six只对Python 2.X 有所要求,而对Python 3.X没有要求。
马丁·托马

@MartinThoma这打败了整个观点(正如Mark Amery所写)。如果进行了try / except检查,就没有更多的理由使用了six.moves,并且本地名称也可以直接用于Python 2。
Matthias Kuhn '18

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

然后尝试再次安装MYSQL-python。对我有用


12

python3不支持MySQL-python,您可以使用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 install python3-devel加载的插件:最快的镜像从缓存的主机文件加载镜像速度*基本:mirror.web-ster.com * epel:mirrors.cat.pdx.edu *其他:mirror.web-ster.com * ius:镜像.kernel.org *更新:mirror.web-ster.com没有可用的软件包python3-devel。错误:没有做
维鲁


6

configparser可以通过six库简单地解决Python 2/3的兼容性

from six.moves import configparser


5

我遇到了同样的问题。原来,我需要在centos上安装python3 devel。首先,您需要搜索与系统兼容的软件包。

yum search python3 | grep devel

然后,将软件包安装为:

yum install -y python3-devel.x86_64

然后,从pip安装mysqlclient

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冲泡,然后安装mysqlclientMySQL-Pythonglobal pip3代替virtualenv pip3

然后访问virtualenv并成功安装mysqlclientMySQL-Python



1

我运行kali linux- Rolling,并在更新到python 3.6.0之后尝试在终端中运行cupp.py时遇到了这个问题。一些研究和试验后,我发现,改变 ConfigParserconfigparser我的工作,但那时,我发现另一个问题就来了。

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

经过更多研究,我意识到python 3 ConfigParser已更改为, configparser但请注意它具有属性 ConfigParser()


1

我在Mac OS 10,Python 3.7.6和Django 2.2.7上遇到了相同的错误。在尝试了多种解决方案之后,我想借此机会分享对我有用的东西。

脚步

  1. 通过链接为Mac OS安装了Connector / Python 8.0.20

  2. 将当前依赖项复制到requirements.txt文件,停用当前虚拟环境,并使用删除它;

    创建文件(如果尚未创建的话); touch requirements.txt

    将依赖项复制到文件; python -m pip3 freeze > requirements.txt

    停用并删除当前虚拟环境; deactivate && rm -rf <virtual-env-name>

  3. 创建另一个虚拟环境并使用激活它; 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

这应该可以解决问题。

我收到所有python软件包的安装错误。安倍·卡普拉斯(Abe Karplus)的解决方案和讨论向我暗示了可能是什么问题。然后我回想起我已经手动将/usr/bin/pythonfrom从更改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在Python3中已重命名为configparser。
鲍勃·约普拉特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.