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

然后在终端中运行:

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常用命令

 
 
3、安装必要的组件

先安装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

  

真搞不定,使用方案一,也能用。

 
posted @ 2020-03-16 23:57  dosboy  阅读(677)  评论(0编辑  收藏  举报