在Ubuntu 18.04上安装mysqlclient for python时出错

在Ubuntu 18.04上安装mysqlclient for python时出错,mysql,django,python-3.x,pip,mysql-python,Mysql,Django,Python 3.x,Pip,Mysql Python,我在Ubuntu上安装了Python2.7.15rci和Python3.6.7。当我在virtualenv上执行“pip列表”时,它会返回我: 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安装mysqlclient)并返回一个错误 unable to execute 'x86_64-linux-g

我在Ubuntu上安装了Python2.7.15rci和Python3.6.7。当我在virtualenv上执行“pip列表”时,它会返回我:

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安装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
还有一些。。。但没有一个适合我,问题依然存在。 有什么建议吗


谢谢大家!

gcc
build-essential
软件包的一部分,您应该先安装该软件包:

sudo apt-get install build-essential
更新:根据@bosnjak的建议,您可能还需要安装openssl开发工具:

sudo apt-get install libssl-dev

我指定了python的特定版本,它是3.7 这对我很有帮助

我已经安装了这些:

sudo apt-get install python3.7-dev libmysqlclient-dev
然后通过以下方式安装mysqlclient:

pip install mysqlclient

我发现,几乎每个Python版本的解决方案都略有不同。对于那些使用不同版本(如Python 2.x、3.5或3.7)的用户,我发现:

第一部分 对于Python 2.x,请使用:

  $ sudo apt-get install python-dev
  $ sudo apt-get install libffi-dev
  $ sudo apt-get install python3-dev
  $ sudo apt-get install python3.4-dev
  $ sudo apt-get install python3.7-dev
  $ sudo apt-get install python3.8-dev
  $ sudo apt-get install python3.9-dev
对于Python 2.7,请使用:

  $ sudo apt-get install python-dev
  $ sudo apt-get install libffi-dev
  $ sudo apt-get install python3-dev
  $ sudo apt-get install python3.4-dev
  $ sudo apt-get install python3.7-dev
  $ sudo apt-get install python3.8-dev
  $ sudo apt-get install python3.9-dev
对于Python 3.x使用:

  $ sudo apt-get install python-dev
  $ sudo apt-get install libffi-dev
  $ sudo apt-get install python3-dev
  $ sudo apt-get install python3.4-dev
  $ sudo apt-get install python3.7-dev
  $ sudo apt-get install python3.8-dev
  $ sudo apt-get install python3.9-dev
对于Python 3.4,请使用:

  $ sudo apt-get install python-dev
  $ sudo apt-get install libffi-dev
  $ sudo apt-get install python3-dev
  $ sudo apt-get install python3.4-dev
  $ sudo apt-get install python3.7-dev
  $ sudo apt-get install python3.8-dev
  $ sudo apt-get install python3.9-dev
对于Python 3.7,请使用:

  $ sudo apt-get install python-dev
  $ sudo apt-get install libffi-dev
  $ sudo apt-get install python3-dev
  $ sudo apt-get install python3.4-dev
  $ sudo apt-get install python3.7-dev
  $ sudo apt-get install python3.8-dev
  $ sudo apt-get install python3.9-dev
对于Python 3.8,请使用:

  $ sudo apt-get install python-dev
  $ sudo apt-get install libffi-dev
  $ sudo apt-get install python3-dev
  $ sudo apt-get install python3.4-dev
  $ sudo apt-get install python3.7-dev
  $ sudo apt-get install python3.8-dev
  $ sudo apt-get install python3.9-dev
对于Python 3.9,请使用:

  $ sudo apt-get install python-dev
  $ sudo apt-get install libffi-dev
  $ sudo apt-get install python3-dev
  $ sudo apt-get install python3.4-dev
  $ sudo apt-get install python3.7-dev
  $ sudo apt-get install python3.8-dev
  $ sudo apt-get install python3.9-dev
第二部分 如果这仍然没有帮助,已经指出要安装

  $ sudo apt-get install build-essential
最后

  $ sudo apt-get install libssl-dev

但最后两个并没有帮助我自己-但希望这可能会帮助你

这个问题在Ubuntu和python 3+中一直存在。在我的例子中,我使用的是Ubuntu18.04,发现这个解决方案对python版本3.7.5很有用

第一步。通过sudoapt安装libpython3.7-dev

> sudo apt-get install libpython3.7-dev
步骤2:安装mysqlclient

> python3 -m pip install mysqlclient==1.4.6

我想在我的Ubuntu18.04上安装'Modoboa'邮件服务器包(),使用Apache作为我的Web服务器,而不是nginx。我需要Python2.7的
mysqlclient
。以下软件包对我很有用:

sudo apt-get install libssl-dev gcc python2.7-dev libmysqlclient-dev

我用的是蟒蛇3.8。与david的回答类似,使用以下命令,它就会工作


$sudo apt get install python3.8-dev

您可以在之前执行此操作:

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential

来源:

根据文档,您需要安装
default libmysqlclient dev
,而不是
libmysqlclient dev
。我也安装了
default libmysqlclient dev
,但仍然不起作用……您说您尝试了
sudo apt获取安装python dev python3 dev
,这些仍然安装吗?还是每次都卸载?所有这些都需要安装。这很奇怪,我只是用默认的python(3.6)在Ubuntu18.0.4上安装了它,没有任何问题。正是通过安装
python3 dev gcc default libmysqlclient dev
。这些已经足够了。我不知道为什么我没有安装这些库,但是我安装了
libssl-dev
,它成功了!谢谢!;)即使在安装了以上所有内容之后,它在Ubuntu 18.04中对我也不起作用,直到我安装了
sudo apt安装libssl dev
,解决了这个问题。@bosnjak解决方案成功了,谢谢!!我试着在新鲜的ubuntu 18.04上安装installation@bosnjak对这正是问题所在。回溯状态为
找不到-lssl
,因此您确实需要安装
libssl dev
在Ubuntu上构建mysqlclient。这再次帮助了我:)Nestor,我很高兴帮助您!它有时也对我有帮助:-)尤其是
defaultlibmysqlclient-dev
起到了帮助作用。