天天看點

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

python3 -m pip install 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找到。否則會出現下面的錯誤:

         ld: library not found for -lssl           
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
      

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

繼續閱讀