[英]Unable to install mysqlclient in python3 virtualenv
我想用 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
,但它以
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-dev
、 python3-dev
、 zlib1g-dev
(在stackoverflow的其他问题中建议的包)。
你有什么想法,我做错了什么?
使用 pymysql 它应该可以解决您的问题。使用pip3 install pymysql
。 安装后,在文件目录project/project/__init__.py
写这个
import pymysql
pymysql.install_as_MySQLdb()
注意:- project 是 django 项目的名称。
您可以按照文档中的说明尝试安装python3-dev
和libmysqlclient-dev
。 我遇到了同样的问题,直到我注意到我需要这些包。
如果您使用的是 python 3.5
或3.6
您应该会遇到此问题中描述的问题。
引用该库的一位贡献者的话:
在 Windows 上构建 MySQL-python 很难。 您应该从源代码而不是 pip install 构建,因为您需要编辑 setup.cfg 文件。
值得庆幸的是,Christoph Gohlke(加利福尼亚大学欧文分校荧光动力学实验室)为 Python 扩展包提供了一个非官方的 Windows 二进制文件,您可以在那里下载该库的轮子 ( .whl
):
根据你的系统和安装的python版本下载。
然后你只需要做(在下载文件的目录中):
pip install mysqlclient-....whl
如果您的系统中安装了多个版本的 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
这应该有效!
根据您的操作系统,从 Christophe Gohlke 的 Windows 预编译 python 包库从以下位置下载 mysqlclient 的预编译 whl 文件。
http://www.lfd.uci.edu/~gohlke/pythonlibs/#vlfd
现在到达下载该文件的目录并在那里打开命令提示符。
现在运行下面的命令
pip 安装 xxx.whl
好运 !!
编译二进制文件时出现问题,有两种可能的解决方案
使用来自第三方网站(如lfd )的预编译二进制文件(仅适用于 Windows)
通过python dev包安装编译所必需的头文件,就像你要构建扩展一样,你需要安装相应的dev包。 使用您的包管理器在系统范围内安装它们,不要忘记提及您用于项目的特定 python 版本。 从Ubuntu 开始,python 3.6 是默认版本,但我的虚拟环境设置为 python3.7,我必须专门安装开发包
apt-get install python3.7-dev
这是我对 stackoverflow 的第一个回答。 我希望它会帮助某人。
请注意以下步骤:
需要 Microsoft Visual C++ 14.0。 在此处下载
在此处下载 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 install mysqlclient‑1.4.6.xxxxx.whl
完毕
您可以轻松地在 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
如果您使用的是 Linux:
如安装mysqlclient的pypi指南中所述,
您可能需要像这样安装 Python 3 和 MySQL 开发头文件和库
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
注意:(用你的python版本替换python3)例如
sudo apt-get install python3.8-dev default-libmysqlclient-dev build-essential
我在安装 mysqlclient python 3.9 32 位时遇到问题。 由于官方文档的建议,我解决了它。 Windows安装部分
安装 MariaDB Connector/C 32 位版本后。
pip install mysqlclient
运行没有错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.