I have a project that worked on ubuntu 16.04 with python 3.6 but now we are trying to make it run on ubuntu 20.04 with same python version. I need to install all requirements on the venv and apparently its only mysqlclient==1.3.12 that fails.
Went through lots of articles on stackoverflow but none of them seem to solve the problem.
Error for pip3 install mysqlclient==1.3.12
Collecting mysqlclient==1.3.12 Using cached mysqlclient-1.3.12.tar.gz (89 kB) Building wheels for collected packages: mysqlclient Building wheel for mysqlclient (setup.py) ... error ERROR: Command errored out with exit status 1: command: /data/ci-dashboard/CI_Dashboard/ci_env/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-g3k3l9km/mysqlclient_82099315cb17439080ee5421b4adf991/setup.py'"'"'; __file__='"'"'/tmp/pip-install-g3k3l9km/mysqlclient_82099315cb17439080ee5421b4adf991/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-lpym4ape cwd: /tmp/pip-install-g3k3l9km/mysqlclient_82099315cb17439080ee5421b4adf991/ Complete output (32 lines): running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-3.6 copying _mysql_exceptions.py -> build/lib.linux-x86_64-3.6 creating build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/__init__.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/compat.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/connections.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/converters.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/cursors.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/release.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/times.py -> build/lib.linux-x86_64-3.6/MySQLdb creating build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/__init__.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/REFRESH.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants running build_ext building '_mysql' extension creating build/temp.linux-x86_64-3.6 x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fdebug-prefix-map=/build/python3.6-8I2qjE/python3.6-3.6.15=. -specs=/usr/share/dpkg/no-pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Dversion_info=(1,3,12,'final',0) -D__version__=1.3.12 -I/usr/include/mysql -I/data/ci-dashboard/CI_Dashboard/ci_env/include -I/usr/include/python3.6m -c _mysql.c -o build/temp.linux-x86_64-3.6/_mysql.o _mysql.c: In function ‘_mysql_ConnectionObject_ping’: _mysql.c:1894:3: error: unknown type name ‘my_bool’; did you mean ‘bool’? 1894 | my_bool recon = reconnect; | ^~~~~~~ | bool error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- ERROR: Failed building wheel for mysqlclient Running setup.py clean for mysqlclient Failed to build mysqlclient Installing collected packages: mysqlclient Running setup.py install for mysqlclient ... error ERROR: Command errored out with exit status 1: command: /data/ci-dashboard/CI_Dashboard/ci_env/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-g3k3l9km/mysqlclient_82099315cb17439080ee5421b4adf991/setup.py'"'"'; __file__='"'"'/tmp/pip-install-g3k3l9km/mysqlclient_82099315cb17439080ee5421b4adf991/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-47odftw8/install-record.txt --single-version-externally-managed --compile --install-headers /data/ci-dashboard/CI_Dashboard/ci_env/include/site/python3.6/mysqlclient cwd: /tmp/pip-install-g3k3l9km/mysqlclient_82099315cb17439080ee5421b4adf991/ Complete output (32 lines): running install running build running build_py creating build creating build/lib.linux-x86_64-3.6 copying _mysql_exceptions.py -> build/lib.linux-x86_64-3.6 creating build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/__init__.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/compat.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/connections.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/converters.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/cursors.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/release.py -> build/lib.linux-x86_64-3.6/MySQLdb copying MySQLdb/times.py -> build/lib.linux-x86_64-3.6/MySQLdb creating build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/__init__.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants copying MySQLdb/constants/REFRESH.py -> build/lib.linux-x86_64-3.6/MySQLdb/constants running build_ext building '_mysql' extension creating build/temp.linux-x86_64-3.6 x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fdebug-prefix-map=/build/python3.6-8I2qjE/python3.6-3.6.15=. -specs=/usr/share/dpkg/no-pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Dversion_info=(1,3,12,'final',0) -D__version__=1.3.12 -I/usr/include/mysql -I/data/ci-dashboard/CI_Dashboard/ci_env/include -I/usr/include/python3.6m -c _mysql.c -o build/temp.linux-x86_64-3.6/_mysql.o _mysql.c: In function ‘_mysql_ConnectionObject_ping’: _mysql.c:1894:3: error: unknown type name ‘my_bool’; did you mean ‘bool’? 1894 | my_bool recon = reconnect; | ^~~~~~~ | bool error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- ERROR: Command errored out with exit status 1: /data/ci-dashboard/CI_Dashboard/ci_env/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-g3k3l9km/mysqlclient_82099315cb17439080ee5421b4adf991/setup.py'"'"'; __file__='"'"'/tmp/pip-install-g3k3l9km/mysqlclient_82099315cb17439080ee5421b4adf991/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-47odftw8/install-record.txt --single-version-externally-managed --compile --install-headers /data/ci-dashboard/CI_Dashboard/ci_env/include/site/python3.6/mysqlclient Check the logs for full command output.
My virtual environment already has these libraries installed:
pip3.6 freeze
aiomysql==0.0.20 alembic==1.1.0 appnope==0.1.2 APScheduler==3.5.3 asn1crypto==0.24.0 astroid==2.4.2 autopep8==1.5.4 backcall==0.2.0 bcrypt==3.1.4 beautifulsoup4==4.6.3 cachetools==4.1.1 certifi==2018.8.24 cffi==1.11.5 chardet==3.0.4 click==6.7 colorama==0.4.3 colorhash==1.0.2 configparser==3.7.1 confluent-kafka==1.2.0 cryptography==2.3.1 cssselect==1.0.3 decorator==4.4.2 dill==0.3.1.1 dominate==2.3.1 Flask==1.0.2 Flask-APScheduler==1.10.1 Flask-Bootstrap==3.3.7.1 Flask-HTTPAuth==4.1.0 flask-ldap3-login==0.9.16 Flask-Login==0.4.1 Flask-Migrate==2.5.2 Flask-Minify==0.18 Flask-MonitoringDashboard==3.1.0 Flask-MySQLdb==0.2.0 flask-profiler==1.8.1 flask-sqlacodegen==1.1.8 Flask-SQLAlchemy==2.3.2 Flask-SSLify==0.1.5 Flask-WTF==0.14.2 gevent==1.4.0 greenlet==0.4.15 gunicorn==19.9.0 htmlmin==0.1.12 idna==2.7 inflect==2.1.0 ipykernel==5.3.4 ipython==7.16.1 ipython-genutils==0.2.0 isort==5.4.2 itsdangerous==0.24 jedi==0.17.2 Jinja2==2.11.1 jsmin==2.2.2 jupyter-client==6.1.7 jupyter-core==4.6.3 kafka-python==1.4.7 kazoo==2.5.0 lazy-object-proxy==1.4.3 ldap3==2.5.2 lesscpy==0.14.0 lxml==4.2.5 Mako==1.1.0 MarkupSafe==1.0 mccabe==0.6.1 multi-key-dict==2.0.3 nest-asyncio==1.4.1 numpy==1.18.1 pandas==0.25.3 paramiko==2.4.2 parso==0.7.1 pbr==4.3.0 pexpect==4.8.0 pickleshare==0.7.5 ply==3.11 prompt-toolkit==3.0.7 psutil==5.7.2 ptyprocess==0.6.0 pyasn1==0.4.4 pyasn1-modules==0.2.4 pyclean==2.0.0 pycodestyle==2.6.0 pycparser==2.19 Pygments==2.7.1 pykafka==2.8.0 PyMySQL==0.9.2 PyNaCl==1.3.0 pyOpenSSL==19.0.0 pyquery==1.4.0 python-dateutil==2.7.3 python-editor==1.0.4 python-jenkins==1.2.1 pytz==2018.5 pyzmq==19.0.2 requests==2.19.1 scipy==1.5.2 simplejson==3.17.2 six==1.15.0 SQLAlchemy==1.2.7 tabulate==0.8.5 toml==0.10.1 tornado==6.0.4 traitlets==4.3.3 typed-ast==1.4.1 tzlocal==1.5.1 urllib3==1.23 visitor==0.1.3 wcwidth==0.2.5 Werkzeug==0.14.1 wrapt==1.12.1 WTForms==2.1 xxhash==1.4.3
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You’re using old mysqlclient
1.3.12 with new MySQL 8. Either you need to downgrade MySQL to version 5.6. Or you need to use later mysqlclient
.
The incompatibility was fixed in commit a2ebbd2
on Dec 21, 2017 so you need a later version of mysqlclient
.
mysqlclient
1.3.13 was released on Jun 27, 2018. Try it or any later version.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0