在 Ubuntu 18.04 上为 python 安装 mysqlclient 时出错
Posted
技术标签:
【中文标题】在 Ubuntu 18.04 上为 python 安装 mysqlclient 时出错【英文标题】:Error installing mysqlclient for python on Ubuntu 18.04 【发布时间】:2019-06-18 10:31:41 【问题描述】:我在 Ubuntu 上安装了 Python 2.7.15rci 和 Python 3.6.7。当我在 virtualenv 上执行 'pip list' 时,它返回给我:
Django (2.1.5)
pip (9.0.1)
pkg-resources (0.0.0)
pytz (2018.9)
setuptools (39.0.1)
wheel (0.32.3)
我正在尝试安装 mysqlclient (pip install mysqlclient) 并返回错误。
unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
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
Complete output from command /home/david/env/project/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-pq18uxjj/mysqlclient/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-y28h4ou0-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/david/env/project/include/site/python3.6/mysqlclient:
/usr/lib/python3.6/distutils/dist.py:261: UserWarning: Unknown distribution option: 'long_description_content_type'
warnings.warn(msg)
running install
running build
running build_py
creating build
creating 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/_exceptions.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
running build_ext
building 'MySQLdb._mysql' extension
creating build/temp.linux-x86_64-3.6
creating build/temp.linux-x86_64-3.6/MySQLdb
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Dversion_info=(1,4,1,'final',0) -D__version__=1.4.1 -I/usr/include/mysql -I/home/david/env/project/include -I/usr/include/python3.6m -c MySQLdb/_mysql.c -o build/temp.linux-x86_64-3.6/MySQLdb/_mysql.o
unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Command "/home/david/env/project/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-pq18uxjj/mysqlclient/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-y28h4ou0-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/david/env/project/include/site/python3.6/mysqlclient" failed with error code 1 in /tmp/pip-build-pq18uxjj/mysqlclient/
所以,我尝试了不同的方法,例如:
sudo apt-get install python-dev
sudo apt-get install python3-dev
sudo apt-get install libmysqlclient-dev
还有一些……但它们都不适合我,问题仍然存在。 有什么建议吗?
谢谢!
【问题讨论】:
您需要根据文档安装default-libmysqlclient-dev
,而不是libmysqlclient-dev
。
我也安装了default-libmysqlclient-dev
,但是还是不行……
你说你试过sudo apt-get install python-dev python3-dev
,那些还在安装吗?还是每次都卸载?所有这些都需要安装。
这很奇怪,我刚刚在 Ubuntu 18.0.4 上使用默认 python (3.6) 安装它,没有任何问题。正是通过安装python3-dev gcc default-libmysqlclient-dev
。这些就足够了。
我不知道为什么我没有安装这些库,但我安装了libssl-dev
并且它起作用了!谢谢! ;)
【参考方案1】:
您之前可以这样做:
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
来源:https://pypi.org/project/mysqlclient/
【讨论】:
特别是default-libmysqlclient-dev
有帮助。【参考方案2】:
我发现,几乎每个 Python 版本的解决方案都略有不同。对于那些使用不同版本的人,例如 Python 2.x、3.5 或 3.7,我找到了this:
第一部分
对于 Python 2.x 使用:
$ sudo apt-get install python-dev
对于 Python 2.7 使用:
$ sudo apt-get install libffi-dev
对于 Python 3.x 使用:
$ sudo apt-get install python3-dev
对于 Python 3.4 使用:
$ sudo apt-get install python3.4-dev
对于 Python 3.7 使用:
$ sudo apt-get install python3.7-dev
对于 Python 3.8 使用:
$ sudo apt-get install python3.8-dev
对于 Python 3.9 使用:
$ sudo apt-get install python3.9-dev
第二部分
如果这仍然没有帮助,others 已经指出要安装
$ sudo apt-get install build-essential
最后
$ sudo apt-get install libssl-dev
但最后两个对我自己没有帮助 - 但希望这对你有帮助!
【讨论】:
【参考方案3】:我正在使用python3.8。与大卫的回答类似,使用以下命令即可。
$ sudo apt-get install python3.8-dev
【讨论】:
【参考方案4】:我想在我的 Ubuntu 18.04 上安装“Modoboa”邮件服务器包 (https://github.com/modoboa/modoboa),并使用 Apache 作为我的网络服务器,而不是 nginx。对于 Python 2.7,我需要 mysqlclient
。以下软件包对我有用:
sudo apt-get install libssl-dev gcc python2.7-dev libmysqlclient-dev
【讨论】:
【参考方案5】:这个问题在 Ubuntu 和 python 3+ 中一直存在。就我而言,我使用的是 Ubuntu 18.04,发现这个解决方案对 python 3.7.5 版很有用
步骤 1. 通过 sudo apt 安装 libpython3.7-dev
> sudo apt-get install libpython3.7-dev
第二步:安装mysqlclient
> python3 -m pip install mysqlclient==1.4.6
【讨论】:
谢谢,这解决了我的问题。你节省了我很多时间。【参考方案6】:我指定了 python 的特定版本,它是 3.7 这对我有帮助
我已经安装了这些:
sudo apt-get install python3.7-dev libmysqlclient-dev
然后通过以下方式安装mysqlclient:
pip install mysqlclient
【讨论】:
这再次帮助了我:) 内斯特,很高兴为您提供帮助!它有时对我也有帮助:-) 谢谢,这解决了我的问题。你节省了我很多时间:)【参考方案7】:gcc
是build-essential
软件包的一部分,您应该先安装它:
sudo apt-get install build-essential
更新:按照@bosnjak 的建议,您可能还需要安装openssl 开发者工具:
sudo apt-get install libssl-dev
【讨论】:
即使在安装了以上所有内容后,它在 Ubuntu 18.04 中对我不起作用,直到我安装了sudo apt install libssl-dev
,它解决了这个问题。
@bosnjak 解决方案有效,谢谢!我试图在全新的 ubuntu 18.04 安装上安装
@bosnjak 是的!这正是问题所在。回溯状态为cannot find -lssl
,因此您确实需要安装libssl-dev
才能在Ubuntu 上构建mysqlclient。以上是关于在 Ubuntu 18.04 上为 python 安装 mysqlclient 时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ubuntu 18 上为 python 3.7 安装 pip?
如何在 Ubuntu 20.04 上为 Python 3.9 安装 pip