macOS Sierra 上安裝 mysqlclient 問題

99.9% 的人不需要看這篇文章。我是說真的搀矫。

寫在前面

好久沒有寫這種類型的文章了夏伊,記錄遇到的具體問題摇展。

隨著搜索水平的提高,特別是英文搜索水平的提高溺忧,這種類型的文章感覺越來越沒有價值咏连,因為一搜索就找到了答案。難怪大家說砸狞,現(xiàn)在的程序員 = 搜索引擎 + Ctrl+C + Ctrl+V 捻勉。

今天寫這個文章是因為花了吃奶的力氣仍然搜索不到答案,最后還是靠經驗和基礎知識解決刀森。問題是這樣,在 macOS Sierra 上使用 pip 安裝 mysqlclient 時遇到錯誤报账,無法鏈接到 libssl 庫研底,系統(tǒng)上明明安裝了 openssl 可是就是鏈接不到埠偿。

看到這里,99% 的讀者可以關掉這個頁面走人了榜晦。

問題現(xiàn)象

系統(tǒng)安裝了 mysql 冠蒋,使用 pip install mysqlclient 時出錯,錯誤信息如下:

building '_mysql' extension
creating build/temp.macosx-10.6-intel-3.5
/usr/bin/clang -fno-strict-aliasing -Wsign-compare -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch i386 -arch x86_64 -g -Dversion_info=(1,3,9,'final',1) -D__version__=1.3.9 -I/usr/local/Cellar/mysql/5.7.16/include/mysql -I/Library/Frameworks/Python.framework/Versions/3.5/include/python3.5m -c _mysql.c -o build/temp.macosx-10.6-intel-3.5/_mysql.o -fno-omit-frame-pointer
/usr/bin/clang -bundle -undefined dynamic_lookup -arch i386 -arch x86_64 -g build/temp.macosx-10.6-intel-3.5/_mysql.o -L/usr/local/Cellar/mysql/5.7.16/lib -lmysqlclient -lssl -lcrypto -o build/lib.macosx-10.6-intel-3.5/_mysql.cpython-35m-darwin.so
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/clang' failed with exit status 1

錯誤出現(xiàn)的系統(tǒng)是 macOS Sierra, 在 EI Capitan 上安裝沒有遇到這個問題乾胶。

問題分析

系統(tǒng)上明明裝了 openssl 庫抖剿,可是為什么找不到 libssl 呢?找了一堆答案都是教大家用 brew link --force openssl 识窿,可是這個方法對 macOS Sierra 無效斩郎。原因是蘋果現(xiàn)在不用 openssl 了,而是使用自己維護的加密算法庫喻频。為什么要這樣做缩宜,不得而知,或許是被 openssl 經常爆出的滴血漏洞傷透了心吧甥温。

所以锻煌,要在 mac 上鏈接 ssl 庫,需要指定庫的路徑姻蚓,即加上 -L/usr/local/opt/openssl宋梧,把這個目錄加進庫的搜索路徑即可。

細心的人在用 brew install openssl 時會注意到下面的信息:

This formula is keg-only, which means it was not symlinked into /usr/local.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you’ll need to add to your
build variables:

LDFLAGS: -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig

解決方案

  1. 從 Github 上下載 mysqlclient 源碼
  2. 進入項目的 virtualenv 環(huán)境狰挡。為什么要這一步捂龄,因為我們希望把 mysqlclient 安裝到項目所在的 python 運行環(huán)境中
  3. 運行 python setup.py install,這個時候肯定還是報錯的
  4. 拷貝命令臺上的最后一個報錯的命令圆兵,在 -L/usr/local/Cellar/mysql/5.7.16/lib 后面增加如下內容 -L/usr/local/opt/openssl跺讯,然后回車再執(zhí)行一遍這個命令
  5. 再次運行 python setup.py install 即可成功安裝

當然,這個做法是偷懶的做法殉农。真正優(yōu)雅一點的是修改 mysqlclient 的編譯腳本刀脏,直接把 ssl 庫增加進去〕剩或許還可以向開發(fā)者提個 PR 來解決這個問題愈污。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市轮傍,隨后出現(xiàn)的幾起案子暂雹,更是在濱河造成了極大的恐慌,老刑警劉巖创夜,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杭跪,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機涧尿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門系奉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姑廉,你說我怎么就攤上這事缺亮。” “怎么了桥言?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵萌踱,是天一觀的道長。 經常有香客問我号阿,道長并鸵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任倦西,我火速辦了婚禮能真,結果婚禮上,老公的妹妹穿的比我還像新娘扰柠。我一直安慰自己粉铐,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布卤档。 她就那樣靜靜地躺著蝙泼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪劝枣。 梳的紋絲不亂的頭發(fā)上汤踏,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音舔腾,去河邊找鬼溪胶。 笑死,一個胖子當著我的面吹牛稳诚,可吹牛的內容都是我干的哗脖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼扳还,長吁一口氣:“原來是場噩夢啊……” “哼才避!你這毒婦竟也來了?” 一聲冷哼從身側響起氨距,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤桑逝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后俏让,有當地人在樹林里發(fā)現(xiàn)了一具尸體楞遏,經...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡茬暇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了橱健。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片而钞。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡沙廉,死狀恐怖拘荡,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情撬陵,我是刑警寧澤珊皿,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站巨税,受9級特大地震影響蟋定,放射性物質發(fā)生泄漏。R本人自食惡果不足惜草添,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一驶兜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧远寸,春花似錦抄淑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灶芝,卻和暖如春郑原,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夜涕。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工犯犁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人女器。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓酸役,卻偏偏與公主長得像,于是被迫代替她去往敵國和親晓避。 傳聞我的和親對象是個殘疾皇子簇捍,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內容