在 virtualenv 中安装 Django:MySQL-python 错误

Posted

技术标签:

【中文标题】在 virtualenv 中安装 Django:MySQL-python 错误【英文标题】:Django installation in virtualenv : MySQL-python error 【发布时间】:2019-08-16 20:48:09 【问题描述】:

我正在尝试在 OpenSuse 15.0 上的 Python2.7 virtualenv 中安装 Djando 安装 django 可以,但不能安装 mysql-python:Djando installation documentation

pip install MySQL-python

Collecting MySQL-python
  Using cached https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip
Building wheels for collected packages: MySQL-python
  Building wheel for MySQL-python (setup.py) ... error
  Complete output from command /home/u372284/development/pra_manager/djando/venv/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-4TF6HJ/MySQL-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-aVaY0z --python-tag cp27:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-2.7
  copying _mysql_exceptions.py -> build/lib.linux-x86_64-2.7
  creating build/lib.linux-x86_64-2.7/MySQLdb
  copying MySQLdb/__init__.py -> build/lib.linux-x86_64-2.7/MySQLdb
  copying MySQLdb/converters.py -> build/lib.linux-x86_64-2.7/MySQLdb
  copying MySQLdb/connections.py -> build/lib.linux-x86_64-2.7/MySQLdb
  copying MySQLdb/cursors.py -> build/lib.linux-x86_64-2.7/MySQLdb
  copying MySQLdb/release.py -> build/lib.linux-x86_64-2.7/MySQLdb
  copying MySQLdb/times.py -> build/lib.linux-x86_64-2.7/MySQLdb
  creating build/lib.linux-x86_64-2.7/MySQLdb/constants
  copying MySQLdb/constants/__init__.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
  copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
  copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
  copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
  copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
  copying MySQLdb/constants/REFRESH.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
  copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
  running build_ext
  building '_mysql' extension
  creating build/temp.linux-x86_64-2.7
  gcc -pthread -fno-strict-aliasing -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-***-protection -g -DNDEBUG -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-***-protection -g -DOPENSSL_LOAD_CONF -fwrapv -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/include/mysql -I/usr/include/mysql/mariadb -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o
  _mysql.c: In function ‘_mysql_ConnectionObject_ping’:
  _mysql.c:2005:41: error: ‘MYSQL aka struct st_mysql’ has no member named ‘reconnect’
    if ( reconnect != -1 ) self->connection.reconnect = reconnect;
                                           ^
  error: command 'gcc' failed with exit status 1

我尝试安装许多库:python-devel、mysqlclient,...但没有任何改变。

有人知道怎么了?

【问题讨论】:

不幸的是:Information for package gcc: ---------------------------- Repository : openSUSE-Leap-15.0-Oss Name : gcc Version : 7-lp150.1.50 Arch : x86_64 Vendor : openSUSE Installed Size : 0 B Installed : Yes (automatically) Status : up-to-date Source package : gcc-7-lp150.1.50.src Summary : The system GNU C Compiler Description : The system GNU C Compiler. 如果你现在使用 MySQL 和 Django,推荐的库是 mysqlclient 而不是 MySQL-python。那些安装说明非常古老。如果您今天正在学习 Django,请寻找使用 Python 3 和 Django 2.X 的不同指南。 谢谢@Alasdair!我想用官方文档把它做好:P 【参考方案1】:

如果你想将你的 djago 与 mysql 连接,你必须安装 mysql 连接器 5.6 或更高版本。

Django 支持 MySQL 5.6 及更高版本。

Django 的 inspectdb 功能使用 information_schema 数据库,其中包含所有数据库模式的详细数据。

Django 期望数据库支持 Unicode(UTF-8 编码)并将执行事务和引用完整性的任务委托给它。重要的是要注意,在使用 MyISAM 存储引擎时,MySQL 并没有实际执行后两个,请参阅下一节。

【讨论】:

以上是关于在 virtualenv 中安装 Django:MySQL-python 错误的主要内容,如果未能解决你的问题,请参考以下文章

想在 Ubuntu 中安装 Django [重复]

如何在python2.7中安装MySQLdb 在virtualenv中安装

在 openSUSE 上的 Virtualenv 中安装 TensorFlow

无法在 virtualenv 中安装 mySQL-python

如何在 Pycharm Virtualenv 中安装 kivy? [复制]

在 python 中安装模块 - pip、distribute、nose、virtualenv