MacOs安装python3的mysqlclient组件支持django运行
MacOs安装python3后启动django的网站,提示mysqlclient组件不存在,直接安装又出错,仲么办呢?
今日闲来无事,增加硬盘1T,苹果安装不利,Django出错生气。
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb' Error loading MySQLdb module. Did you install mysqlclient?
记得以前为了这个问题题折腾了好久,今天把解决过程写下,终于搞清了这个问题。
这个问题主要是版本不兼容的问题,其实存在两个问题:
1、MySqldb与mysqlclient问题。这两个东东都是Django官方支持的用于python的mysql的驱动,网上的关于MySqldb的组件的90%的说法是不正确或是过时的:“MySqldb不支持python3必须要使用pymysql来替代” 。mysqlclient就是从MySqldb改进而来完全支持Python3,如果你是window或是Linux按照下面的网址教程安装完毕就好可以使用了。
https://github.com/PyMySQL/mysqlclient-python
2、MacOS 的特殊性。 在MacOS系统当中brew安装很费事,要折腾很多,并且有众多的组件安装方法与Linux又不同。
两个解决方案:
方案一、替代方案
具体原理就是:使用pymysql组件(这个组件可以支持python3),替代django中的mysqlclient。
把原生的Oracle的组件,换成pymysql,后效率可能会下降。
1、使用如下的命令行安装PyMySQL
2、在项目的setting.py同级的 init.py 文件中添加以下代码即可。
import pymysql pymysql.install_as_MySQLdb()
方案二、安装mysqlclient
在MacOS安装mysqlclient可麻烦了,下面是简要的步骤:
1、 安装xcode
在App Store中找到Xcode并安装它,直到出现这个图标,打开同意即可:
然后在终端中运行:
xcode-select --install
2、安装brew。
很多mysqlclient需要的组件都必须从brew中安装,由于国外的镜像很慢,建议从国内中科大的镜像安装。
2.1 官网安装Homebrew(不推荐)
官网网址:https://brew.sh/
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
由于特别原因安装的速度可能会断,建议搭配使用一些外网互联上网工具进行安装。
2.2 国内镜像安装(推荐)
(1) 获取install文件
获取官网脚本并保存名为 brew_install
(这一步也需一点点技术手段进行互联上网):
https://raw.githubusercontent.com/Homebrew/install/master/install
(2)替换成清华大学的镜像
打开 brew_install 文件,修改如下:
找到如下代码:
BREW_REPO = “https://github.com/Homebrew/brew“.freeze CORE_TAP_REPO = “https://github.com/Homebrew/homebrew-core“.freeze
更改为:
BREW_REPO = “https://mirrors.ustc.edu.cn/brew.git “.freeze CORE_TAP_REPO = “https://mirrors.ustc.edu.cn/homebrew-core.git“.freeze
注意: 新版本HomeBrew可能没有CORE_TAP_REPO
这句代码,如果没有不用新增。 如果这个镜像有问题的话,可以换成其他源。
(3)执行脚本
打开终端允许脚本
/usr/bin/ruby brew_install
如果走运,全部安装完了,就进行下一步(4)。
如果此时脚本停在
==> Tapping homebrew/core
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
出现这个原因是因为源不通,代码来不下来,解决方法就是更换国内镜像源:
手动执行下面这句命令,更换为中科院的镜像:
git clone git://mirrors.ustc.edu.cn/homebrew-core.git/ /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core --depth=1
然后把homebrew-core的镜像地址也设为中科院的国内镜像
cd "$(brew --repo)" git remote set-url origin https://mirrors.ustc.edu.cn/brew.git cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
执行更新,成功:
brew update
最后用这个命令检查无错误:
brew doctor
至此HomeBrew就安装完成了。
(4)更改默认源
直接使用 Homebrew 还需要更改默认源。以下是将默认源替换为国内 USTC 源的方法。 如下:
替换仓库核心软件
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
替换 cask 软件仓库(提供 macOS 应用和大型二进制文件)
cd "$(brew --repo)"/Library/Taps/caskroom/homebrew-cask git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
替换 Bottles 源(Homebrew 预编译二进制软件包)
bash(默认 shell)用户:
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile source ~/.bash_profile
(6) brew常用命令
先安装gcc组件:
brew install gcc
安装完毕后,再安装
brew install openssl
并且下面要把环变量设置好,方便python3找到。否则会出现下面的错误:
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'gcc' failed with exit status 1
/private/var/folders/by/c1t20gqd2b3crsh5v7x1gfh80000gn/T/pip-install-unlf6wgo/mysqlclient/
在
这命令行中这么设置环境:
export LDFLAGS="-L/usr/local/opt/openssl/lib" export CPPFLAGS="-I/usr/local/opt/openssl/include"
最后可以放心地安装:
python3 -m pip install mysqlclient
真搞不定,使用方案一,也能用。