无法在python3 virtualenv中安装mysqlclient

时间:2015-09-08 19:48:41

标签: python mysql django

我想用MySQL和Python 3运行django。我用virtualenv --no-site-packages -p python3 ./初始化了虚拟环境。然后我用pip安装了django和wheel,所以pip freeze给出了

django==1.8.3
wheel==0.24.0

然后我尝试使用pip install mysqlclient安装mysqlclient,但它以

结束
Downloading/unpacking mysqlclient
Downloading mysqlclient-1.3.6.tar.gz (78kB): 78kB downloaded
Running setup.py (path:/tmp/pip-build-jpdlrnc8/mysqlclient/setup.py) egg_info for package mysqlclient

Installing collected packages: mysqlclient
Running setup.py install for mysqlclient
building '_mysql' extension
i586-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -Dversion_info=(1,3,6,'final',1) -D__version__=1.3.6 -I/usr/include/mysql -I/usr/include/python3.4m -I/home/ondra/zelvovani/include/python3.4m -c _mysql.c -o build/temp.linux-i686-3.4/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -DTAOCRYPT_DISABLE_X86ASM -g -DNDEBUG
error: command 'i586-linux-gnu-gcc' failed with exit status 1
Complete output from command /home/ondra/zelvovani/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-jpdlrnc8/mysqlclient/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-fa_6nkh3-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ondra/zelvovani/include/site/python3.4:
running install

running build

running build_py

creating build

creating build/lib.linux-i686-3.4

copying _mysql_exceptions.py -> build/lib.linux-i686-3.4

creating build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/__init__.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/compat.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/converters.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/connections.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/cursors.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/release.py -> build/lib.linux-i686-3.4/MySQLdb

copying MySQLdb/times.py -> build/lib.linux-i686-3.4/MySQLdb

creating build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/__init__.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/CR.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/ER.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/FLAG.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/REFRESH.py -> build/lib.linux-i686-3.4/MySQLdb/constants

copying MySQLdb/constants/CLIENT.py -> build/lib.linux-i686-3.4/MySQLdb/constants

running build_ext

building '_mysql' extension

creating build/temp.linux-i686-3.4

i586-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -Dversion_info=(1,3,6,'final',1) -D__version__=1.3.6 -I/usr/include/mysql -I/usr/include/python3.4m -I/home/ondra/zelvovani/include/python3.4m -c _mysql.c -o build/temp.linux-i686-3.4/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -DTAOCRYPT_DISABLE_X86ASM -g -DNDEBUG

error: command 'i586-linux-gnu-gcc' failed with exit status 1

----------------------------------------
Cleaning up...
Command /home/ondra/zelvovani/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip-build-jpdlrnc8/mysqlclient/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-fa_6nkh3-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ondra/zelvovani/include/site/python3.4 failed with error code 1 in /tmp/pip-build-jpdlrnc8/mysqlclient
Storing debug log for failure in /home/ondra/.pip/pip.log

我已经安装了libmysqlclient-devpython3-devzlib1g-dev(在stackoverflow中的其他问题中建议的软件包)。

你有什么想法,我做错了什么?

9 个答案:

答案 0 :(得分:9)

使用pymysql它应该解决你的问题。使用pip3 install pymysql。安装后,在文件目录project/project/__init__.py中写下此

import pymysql 
pymysql.install_as_MySQLdb()

注意: - project是django项目的名称。

答案 1 :(得分:4)

您可以尝试按the documentation说明安装python3-devlibmysqlclient-dev。我有同样的问题,直到我注意到我需要这些包。

答案 2 :(得分:2)

如果您使用的是python 3.53.6,则应该遇到this issue中描述的问题。

引用此库的一个贡献者:

  

在Windows上构建MySQL-python很难。您应该从source而不是pip install构建,因为您需要编辑setup.cfg文件。

值得庆幸的是,Christoph Gohlke(加利福尼亚大学欧文分校的荧光动力学实验室)有一个非正式的Windows扩展软件包,你可以在这里下载这个库的轮子(.whl):

根据您安装的系统和python版本下载。

然后你只需要(在下载文件的目录中):

pip install mysqlclient-....whl

答案 3 :(得分:0)

根据您的操作系统从Christophe Gohlke的预编译python包库下载mysqlclient的预编译whl文件,该软件包来自以下位置。

http://www.lfd.uci.edu/~gohlke/pythonlibs/#vlfd

现在到了下载该文件的目录并在那里打开命令提示符。

现在在命令

下面运行

pip install xxx.whl

祝你好运!!

答案 4 :(得分:0)

在编译二进制文件时出现问题,并且有两种可能的解决方案

  1. 使用来自lfd这样的第三方网站的预编译二进制文件(仅适用于Windows)
  2. 通过python dev软件包安装头文件,这对于编译是必需的,就像要构建扩展一样,您需要安装相应的dev软件包。使用包管理器在系统范围内安装它们,不要忘了提及您用于项目的特定python版本。从 Ubuntu 开始,python 3.6是默认版本,但我的虚拟环境已设置为python3.7,我必须通过

    专门安装开发包。

    apt-get install python3.7-dev

这是我对stackoverflow的第一个答案。我希望它能对某人有所帮助。

答案 5 :(得分:0)

如果您的系统中安装了多个版本的python,通常会发生这种情况。首先,全局卸载mysqlclient和pymysql(如果已安装):

pip3 uninstall mysqlclient
pip3 uninstall pymysql

现在,转到您的项目并删除venv

sudo rm -r venv

如果使用pycharm,它将弹出以设置解释器。选择python3.6作为您的解释器并创建一个虚拟环境。如果不使用pycharm,

python3 -m virtualenv venv
source venv/bin/activate

现在,安装mysqlclient,

pip3 install mysqlclient

这应该有效!

答案 6 :(得分:0)

请注意以下步骤:

  • 需要Microsoft Visual C ++ 14.0。在HERE

    中下载
  • HERE中下载mysqlclient

  • 以下是兼容的mysqlclient和python的列表:

    mysqlclient‑1.4.6‑cp39‑cp39‑win_amd64.whl-> python 3.9(64位) mysqlclient‑1.4.6‑cp39‑cp39‑win32.whl-> python 3.9(32位)

    mysqlclient‑1.4.6‑cp38‑cp38‑win_amd64.whl-> python 3.8(64位) mysqlclient‑1.4.6‑cp38‑cp38‑win32.whl-> python 3.8(32位)

    mysqlclient‑1.4.6‑cp37‑cp37m‑win_amd64.whl-> python 3.7(64位) mysqlclient-1.4.6-cp37-cp37m-win32.whl-> python 3.7(32位)

    mysqlclient‑1.4.6‑cp36‑cp36m‑win_amd64.whl-> python 3.6(64位) mysqlclient-1.4.6-cp36-cp36m-win32.whl-> python 3.6(32位)

  • 根据您的python版本下载mysql

  • 安装mysql-> pip3安装mysqlclient‑1.4.6.xxxxx.whl

  • 完成

答案 7 :(得分:0)

您可以轻松地在python3。*虚拟环境或系统级别安装 mysqlclient ,只需执行以下步骤:

首先,安装:

$ sudo apt-get install gcc libssl-dev

$ sudo apt-get install python3.6-dev libmysqlclient-dev

别忘了根据您的需要更新python版本,并且对于python2.7使用

$ sudo apt-get install python-dev libmysqlclient-dev

现在只需使用以下命令安装MySQL客户端:

$ pip install mysqlclient

如果要在系统级别安装相同的文件,请在命令开头添加 sudo

注意: 每当您创建python虚拟环境时,请务必先更新pip和setuptools,然后再进行需求安装:

$ pip install pip setuptools -U

答案 8 :(得分:0)

如果您使用的是 Linux:

在安装mysqlclient的pypi guide中提到,

您可能需要像这样安装 Python 3 和 MySQL 开发头文件和库

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

注意: (将 python3 替换为您的 python 版本)例如

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