Python 3 ImportError: No module named 'ConfigParser'
Question:
I am trying to pip install
the MySQL-python
package, but I get an 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$
Any ideas?
Answers:
In Python 3, ConfigParser
has been renamed to configparser
for PEP 8 compliance. It looks like the package you are installing does not support Python 3.
You can instead use the mysqlclient
package as a drop-in replacement for MySQL-python. It is a fork of MySQL-python
with added support for Python 3.
I had luck with simply
pip install mysqlclient
in my python3.4 virtualenv after
sudo apt-get install python3-dev libmysqlclient-dev
which is obviously specific to ubuntu/debian, but I just wanted to share my success 🙂
Here is a code that should work in both Python 2.x and 3.x
Obviously you will need the six
module, but it’s almost impossible to write modules that work in both versions without six.
try:
import configparser
except:
from six.moves import configparser
Kindly to see what is /usr/bin/python
pointing to
if it is pointing to python3 or higher
change to python2.7
This should solve the issue.
I was getting install error for all the python packages. Abe Karplus’s solution & discussion gave me the hint as to what could be the problem.
Then I recalled that I had manually changed the /usr/bin/python
from python2.7
to /usr/bin/python3.5
, which actually was causing the issue. Once I reverted
the same. It got solved.
This worked for me
cp /usr/local/lib/python3.5/configparser.py /usr/local/lib/python3.5/ConfigParser.py
If you are using CentOS, then you need to use
yum install python34-devel.x86_64
yum groupinstall -y 'development tools'
pip3 install mysql-connector
pip install mysqlclient
MySQL-python is not supported on python3 instead of this you can use mysqlclient
If you are on fedora/centos/Red Hat
install following package
yum install python3-devel
pip install mysqlclient
how about checking the version of Python you are using first.
import six
if six.PY2:
import ConfigParser as configparser
else:
import configparser
I run kali linux- Rolling and I came across this problem ,when I tried running cupp.py in the terminal, after updating to python 3.6.0. After some research and trial I found that changing ConfigParser
to configparser
worked for me but then I came across another issue.
config = configparser.configparser()
AttributeError: module 'configparser' has no attribute 'configparser'
After a bit more research I realised that for python 3 ConfigParser
is changed to configparser
but note that it has an attribute ConfigParser()
.
Compatibility of Python 2/3 for configparser
can be solved simply by six
library
from six.moves import configparser
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py
Then try to install the mysql-python
again.
That worked for me.
Try this solution which worked fine for me.
Basically it’s to reinstall/upgrade to latest version of mysql from brew, and then installing mysqlclient
or MySQL-Python
from global pip3
instead of virtualenv pip3
.
Then accessing the virtualenv
and successfully install mysqlclient
or MySQL-Python
.
I got further with Valeres answer:
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py
Then try to install the MYSQL-python again. That Worked for me
I would suggest to link the file instead of copy it. It is save to update. I linked the file to /usr/lib/python3/
directory.
I was having the same problem. Turns out, I needed to install python3 devel on my centos. First, you need to search for the package that is compatible with your system.
yum search python3 | grep devel
Then, install the package as:
yum install -y python3-devel.x86_64
Then, install mysqlclient from pip
pip install mysqlclient
Do pip3 install PyMySQL
and then pip3 install mysqlclient
.
Worked for me
I was getting the same error on Mac OS 10, Python 3.7.6 & Django 2.2.7. I want to use this opportunity to share what worked for me after trying out numerous solutions.
Steps
-
Installed Connector/Python 8.0.20 for Mac OS from link
-
Copy current dependencies into requirements.txt file, deactivated the current virtual env, and deleted it using;
create the file if not already created with; touch requirements.txt
copy dependency to file; python -m pip3 freeze > requirements.txt
deactivate and delete current virtual env; deactivate && rm -rf <virtual-env-name>
-
Created another virtual env and activated it using; python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate
-
Install previous dependencies using; python -m pip3 install -r requirements.txt
I still have this issue, so I go to /usr/lib/python3.8 and type as sudoer:
cp configparser.py ConfigParser.py
You may have another python version than 3.8.
For me the following command worked:
sudo python3 -m pip install mysql-connector
Additional info:
Python 2x
import ConfigParser
Python 3x
import configparser
Following @MaciejNg I tried making a copy, which didn’t work:
sudo cp ./env/lib/python3.8/site-packages/configparser.py ./env/lib/python3.8/site-packages/ConfigParser.py
Because configparser.py
and ConfigParser.py
are identical, I renamed the file:
sudo mv ./env/lib/python3.8/site-packages/configparser.py ./env/lib/python3.8/site-packages/ConfigParser.py
base on your OS is centos use python3
if you don’t known where is configparser.py or ConfigParser.py
-
pip3 install configparser
-
find / -name "configparser.py"
-
cd /usr/local/lib/python3.6/site-packages(base on your environment )
-
cp configparser.py ConfigParser.py
solved the issue
I am trying to pip install
the MySQL-python
package, but I get an 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$
Any ideas?
In Python 3, ConfigParser
has been renamed to configparser
for PEP 8 compliance. It looks like the package you are installing does not support Python 3.
You can instead use the mysqlclient
package as a drop-in replacement for MySQL-python. It is a fork of MySQL-python
with added support for Python 3.
I had luck with simply
pip install mysqlclient
in my python3.4 virtualenv after
sudo apt-get install python3-dev libmysqlclient-dev
which is obviously specific to ubuntu/debian, but I just wanted to share my success 🙂
Here is a code that should work in both Python 2.x and 3.x
Obviously you will need the six
module, but it’s almost impossible to write modules that work in both versions without six.
try:
import configparser
except:
from six.moves import configparser
Kindly to see what is /usr/bin/python
pointing to
if it is pointing to python3 or higher
change to python2.7
This should solve the issue.
I was getting install error for all the python packages. Abe Karplus’s solution & discussion gave me the hint as to what could be the problem.
Then I recalled that I had manually changed the /usr/bin/python
from python2.7
to /usr/bin/python3.5
, which actually was causing the issue. Once I reverted
the same. It got solved.
This worked for me
cp /usr/local/lib/python3.5/configparser.py /usr/local/lib/python3.5/ConfigParser.py
If you are using CentOS, then you need to use
yum install python34-devel.x86_64
yum groupinstall -y 'development tools'
pip3 install mysql-connector
pip install mysqlclient
MySQL-python is not supported on python3 instead of this you can use mysqlclient
If you are on fedora/centos/Red Hat
install following package
yum install python3-devel
pip install mysqlclient
how about checking the version of Python you are using first.
import six
if six.PY2:
import ConfigParser as configparser
else:
import configparser
I run kali linux- Rolling and I came across this problem ,when I tried running cupp.py in the terminal, after updating to python 3.6.0. After some research and trial I found that changing ConfigParser
to configparser
worked for me but then I came across another issue.
config = configparser.configparser()
AttributeError: module 'configparser' has no attribute 'configparser'
After a bit more research I realised that for python 3 ConfigParser
is changed to configparser
but note that it has an attribute ConfigParser()
.
Compatibility of Python 2/3 for configparser
can be solved simply by six
library
from six.moves import configparser
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py
Then try to install the mysql-python
again.
That worked for me.
Try this solution which worked fine for me.
Basically it’s to reinstall/upgrade to latest version of mysql from brew, and then installing mysqlclient
or MySQL-Python
from global pip3
instead of virtualenv pip3
.
Then accessing the virtualenv
and successfully install mysqlclient
or MySQL-Python
.
I got further with Valeres answer:
pip install configparser
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py
Then try to install the MYSQL-python again. That Worked for me
I would suggest to link the file instead of copy it. It is save to update. I linked the file to /usr/lib/python3/
directory.
I was having the same problem. Turns out, I needed to install python3 devel on my centos. First, you need to search for the package that is compatible with your system.
yum search python3 | grep devel
Then, install the package as:
yum install -y python3-devel.x86_64
Then, install mysqlclient from pip
pip install mysqlclient
Do pip3 install PyMySQL
and then pip3 install mysqlclient
.
Worked for me
I was getting the same error on Mac OS 10, Python 3.7.6 & Django 2.2.7. I want to use this opportunity to share what worked for me after trying out numerous solutions.
Steps
-
Installed Connector/Python 8.0.20 for Mac OS from link
-
Copy current dependencies into requirements.txt file, deactivated the current virtual env, and deleted it using;
create the file if not already created with;
touch requirements.txt
copy dependency to file;
python -m pip3 freeze > requirements.txt
deactivate and delete current virtual env;
deactivate && rm -rf <virtual-env-name>
-
Created another virtual env and activated it using;
python -m venv <virtual-env-name> && source <virtual-env-name>/bin/activate
-
Install previous dependencies using;
python -m pip3 install -r requirements.txt
I still have this issue, so I go to /usr/lib/python3.8 and type as sudoer:
cp configparser.py ConfigParser.py
You may have another python version than 3.8.
For me the following command worked:
sudo python3 -m pip install mysql-connector
Additional info:
Python 2x
import ConfigParser
Python 3x
import configparser
Following @MaciejNg I tried making a copy, which didn’t work:
sudo cp ./env/lib/python3.8/site-packages/configparser.py ./env/lib/python3.8/site-packages/ConfigParser.py
Because configparser.py
and ConfigParser.py
are identical, I renamed the file:
sudo mv ./env/lib/python3.8/site-packages/configparser.py ./env/lib/python3.8/site-packages/ConfigParser.py
base on your OS is centos use python3
if you don’t known where is configparser.py or ConfigParser.py
-
pip3 install configparser
-
find / -name "configparser.py"
-
cd /usr/local/lib/python3.6/site-packages(base on your environment )
-
cp configparser.py ConfigParser.py
solved the issue