今天想用NumPy來做一個(gè)機(jī)器學(xué)習(xí)訓(xùn)練分類器的工作兵钮。但是發(fā)現(xiàn)自己Mac的IDEL打開以后顯示:
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.
然后的確沒運(yùn)行幾句就閃退叉抡。
Part 1~Part 4是嘗試部分椰于, Part 5是最終解決方案
Part 1
搜到解決方案:
brew tap homebrew/dupes
brew install tcl-tk
brew install python --with-tcl-tk
本以為可以開心地訓(xùn)練一個(gè)分類器了淘菩,又出現(xiàn)了新的報(bào)錯(cuò):
$brew tap homebrew/dupes
Error: homebrew/dupes was deprecated. This tap is now empty as all its formulae were migrated.
$brew install python --with-tcl-tk
Error: invalid option: --with-tcl-tk
繼續(xù)解決新問題梭姓,發(fā)現(xiàn)有人指出:
homebrew/dupes霜幼,homebrew/versions好像已經(jīng)被遷移到homebrew/core或者是被刪除
Part 2
我想靈活變通一下,嘗試了:
$ brew tap homebrew/core
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
No changes to formulae.
繼續(xù)嘗試:
$ brew tap homebrew/cask
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> Updated Formulae
apachetop bitwarden-cli cimg gssh protobuf
arangodb cdk cli53 influxdb pulumi
bedtools cfr-decompiler exploitdb kubecfg vulkan-headers
至此解決更新Homebrew的問題
Part 3
$ brew install python --build-from-source
Error: Xcode alone is not sufficient on High Sierra.
Install the Command Line Tools:
xcode-select --install
結(jié)果:未修復(fù)
Part 4. 對(duì)應(yīng)Python 版本安裝 對(duì)應(yīng)的 Tcl-tk,使用安裝包安裝法
Step 1. 備份~/library/Framework 下的 Tcl 和 Tk,然后刪除他們
Step 2: 安裝, 并將變量加入環(huán)境變量中
$ echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
$ source ~/.zshrc
Step 2: 重安裝 Python3
$ brew reinstall python3
結(jié)果:未修復(fù)糊昙,還有新的報(bào)錯(cuò)
$brew reinstall python3
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks
解決辦法:
$sudo mkdir /usr/local/Framework
$sudo chown $USER /usr/local/Frameworks
$brew reinstall python3
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/2to3
Target /usr/local/bin/2to3
already exists. You may want to remove it:
rm '/usr/local/bin/2to3'
Part 5: 最終辛掠,徹底刪除python3谢谦,并重新安裝
Step 1. 刪除python 3.7
# 刪除框架
$sudo rm -rf /Library/Frameworks/Python.framework/Versions/3.7
# 刪除對(duì)應(yīng)目錄
$sudo rm -rf "/Applications/Python 3.7"
# 刪除指向 Python 的連接
$ ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/3.7'| awk '{print $9}' | tr -d @ | xargs rm
Step 2. 備份后刪除 ~/library/Framework 下的 Tcl 和 Tk, 然后下載對(duì)應(yīng)版本的Tcl和Tk并安裝释牺,我使用安裝包安裝的
Step 3 重新安裝Python3后,打開IDLE發(fā)現(xiàn)沒有問題了回挽,開心地做機(jī)器學(xué)習(xí)了没咙!
注意
雖然Tcl和Tk是獨(dú)立的框架和庫,但它們密切相關(guān)千劈,通常同時(shí)安裝或更新祭刚。你不應(yīng)該嘗試混合和匹配Tcl和Tk版本。對(duì)特定版本的Tk的引用假設(shè)也安裝了相應(yīng)的Tcl版本墙牌。
從該網(wǎng)站下載的Python for macOS安裝程序在運(yùn)行時(shí)動(dòng)態(tài)鏈接到Tcl / Tk macOS框架涡驮。 Tcl / Tk主要版本是在創(chuàng)建安裝程序時(shí)確定的,無法覆蓋喜滨。 Python 3.7.x捉捅,3.6.x和2.7.x的所有當(dāng)前python.org安裝程序都鏈接到它們自己的內(nèi)置Tcl / Tk 8.6框架,并且不使用外部Tcl / Tk框架虽风,因此本節(jié)的其余部分僅適用于非當(dāng)前版本棒口,因此不再受支持寄月。
Python 3.6.x和2.7.x的Python 64位/ 32位macOS安裝程序動(dòng)態(tài)鏈接到Tcl / Tk 8.5框架。首次導(dǎo)入tkinter(Python 3)或Tkinter(Python 2)時(shí)(特別是內(nèi)部_tkinter C擴(kuò)展模塊)无牵,會(huì)發(fā)生動(dòng)態(tài)鏈接漾肮。默認(rèn)情況下,macOS動(dòng)態(tài)鏈接器首先在/ Library / Frameworks中查找具有適當(dāng)主要版本的Tcl和Tk框架茎毁。這是第三方的標(biāo)準(zhǔn)位置或從源框架構(gòu)建克懊,包括ActiveTcl版本。如果在那里找不到正確主要版本的框架七蜘,動(dòng)態(tài)鏈接器會(huì)在/ System / Library / Frameworks中查找相同的版本保檐,這是Apple提供的框架與macOS一起提供的位置。 (注意崔梗,您通常不應(yīng)修改或刪除/ System / Library中的文件夜只。)