日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

path manipulation怎么解决_干货!终于!解决macOS下pyenv安装python3.8.2缺少tkinter模块的问题!...

發布時間:2023/12/4 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 path manipulation怎么解决_干货!终于!解决macOS下pyenv安装python3.8.2缺少tkinter模块的问题!... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

筆者不過是一個剛立下flag要學習Python的小白,

(這也是筆者的第一篇網文、知乎文,如果沒用,求輕虐),

為此還沖動傻傻地配了一臺2019款13寸的MacBook Pro。

電腦配置(作為參考)如下:

MacBook Pro (13-inch, 2019, Four Thunderbolt 3 ports)

系統:macOS Catalina 10.15.4

處理器:2.4 GHz 四核Intel Core i5

內存:16 GB 2133 MHz LPDDR3

顯卡:Intel Iris Plus Graphics 655 1536 MB

-------------------------------分割線-------------------------------

正文:

我們開始這次撞墻之旅吧~~~

事情的經過是這樣的,筆者為了學習Python,在網上翻了很多論壇和帖子,配置好了基本環境。

筆者的環境基本是這樣:

1、用Homebrew來管理軟件。

2、用iTerm2 + Oh My Zsh代替蘋果自帶的終端。

3、用pyenv來安裝管理Python版本,然后安裝了Python3.8.2。

4、用PyCharm來當IDE(集成開發環境)。【懵懵懂懂的筆者看了推薦網文,也偷偷安裝了VSCode來假裝會用】

隨后就天真爛漫地開始了Python400集的視頻教程。

萬萬沒想到!!!

到了第5課《Python程序格式_縮進_行注釋_段注釋》時,筆者就卡住了!!!

這節課的標題看起來沒啥問題吧?還只是基礎理論的講解。

可偏偏里面老師講課時用了這段代碼來示范,而且還要學生自己敲一遍。

#導入海龜繪圖模塊 import turtle t = turtle.Pen() #這是一個循壞 for x in range(360):t.forward(x)t.left(59) ''' 測試一下段注釋 '''

沒錯,當筆者用PyCharm敲完代碼,run一下,呵呵,報錯了。

但大致的跟這個差不多:(當時報錯的日志沒保存,沒想過要寫這篇文章哈哈哈哈)

Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/Users/factor/.pyenv/versions/3.8.1/lib/python3.8/tkinter/__init__.py", line 36, in <module>import _tkinter # If this fails your Python may not be configured for Tk ModuleNotFoundError: No module named '_tkinter'

重點是提示這個:(大概意思就是缺少一個叫tkinter的模塊)

ModuleNotFoundError: No module named '_tkinter'

當時筆者是崩潰的,明明照著老師的來敲,怎么就報錯了。

筆者不死心,直接復制課件里面的代碼,再run一遍,呵呵,還是報錯了。

筆者就更加崩潰了,不過遇到問題,只能迎刃而上啊!

于是開始全網搜這個報錯的解決辦法。

這才發現原來這不是筆者一個人的問題啊,簡直是所有人的問題啊!!!

隨后筆者跟著網帖的各種教程去弄,還是不行。

期間還出現了新的報錯:(當時報錯的日志也沒保存)

Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/Users/factor/.pyenv/versions/3.8.1/lib/python3.8/tkinter/__init__.py", line 4552, in _testroot = Tk()File "/Users/factor/.pyenv/versions/3.8.1/lib/python3.8/tkinter/__init__.py", line 2263, in __init__self._loadtk()File "/Users/factor/.pyenv/versions/3.8.1/lib/python3.8/tkinter/__init__.py", line 2279, in _loadtkraise RuntimeError("tk.h version (%s) doesn't match libtk.a version (%s)" RuntimeError: tk.h version (8.6) doesn't match libtk.a version (8.5)

這個報錯的重點是:(大概意思就是tk版本不匹配)

RuntimeError: tk.h version (8.6) doesn't match libtk.a version (8.5)

翻了很多論壇和帖子才發現造成問題的原因有很多,結果筆者中招的應該是最多的。

筆者總結網上的三大原因(中間還有很多配置原因就不說了):

1、蘋果自帶的Python2.7.16和tk8.5版本跟另外安裝Python3.8.2不匹配。

2、pyenv能安裝管理不同版本的Python,但沒有管理tcl-tk的功能。

3、安裝Python3.8.2后才安裝tcl-tk。

-------------------------------分割線-------------------------------

尋求解決方案期間筆者崩潰了好多次,過程很心酸,就不多說了,直接上干貨吧!

解決方案:(大家按照步驟一步步來,應該可以解決,心里還是沒自信嘻嘻嘻)

1、確保環境是干凈的,不管三七二十一,在終端或iTerm里按順序執行下面的命令吧。

如果你沒有安裝過任何東西,只是第一次配置環境,可以跳過第一步。(但執行一下也不會有影響,而且來看這篇文章的應該都已經中超了吧紅紅火火恍恍惚惚)

pyenv versions

#查看已安裝的Python版本

pyenv uninstall <version>

#卸載版本號為<version>的Python,把前面查詢到的除了system以外的版本都卸載干凈

brew uninstall pyenv

#卸載pyenv

rm -rf ~/.pyenv

#清理pyenv殘留文件

brew uninstall tcl-tk

#卸載tcl-tk

rm -rf ~/.tcl-tk

#清理tcl-tk殘留文件

brew uninstall zlib

#卸載zlib

rm -rf ~/.zlib

#清理zlib殘留文件

brew uninstall python

#卸載通過Homebrew安裝的Python版本

brew cleanup

#刪除程序,所有程序老版刪除

至此,電腦的環境應該是干凈的了,至少筆者當時就是操作了這么多來確保干凈。

2、保證其他軟件更新至最新版本

brew update

#更新軟件,把所有的Formula目錄更新,并且會對本機已經安裝并有更新的軟件用*標明。

3、安裝zlib并設置配置文件的環境變量

brew install zlib

#安裝zlib

設置配置文件的環境變量的方法有兩種:

第一種:用vi編輯配置文件,手動添加

vi ~/.bashrc

#如果用蘋果自帶的終端,請執行這個命令,編輯.bashrc配置文件

vi ~/.zshrc

#如果用iTerm2 + Oh My Zsh,請執行這個命令,編輯.zshrc配置文件

打開~/.bashrc或者~/.zshrc配置文件后,在文件最后添加以下命令

# For compilers to find zlib you may need to set: export LDFLAGS="${LDFLAGS} -L/usr/local/opt/zlib/lib" export CPPFLAGS="${CPPFLAGS} -I/usr/local/opt/zlib/include"# For pkg-config to find zlib you may need to set: export PKG_CONFIG_PATH="${PKG_CONFIG_PATH} /usr/local/opt/zlib/lib/pkgconfig"

編輯添加后,按esc鍵,然后手動輸入:wq(冒號:也需要輸入),以保存并推出編輯模式。

第二種:在蘋果自帶的終端或iTerm里用以下命令直接添加至配置文件

echo '# For compilers to find zlib you may need to set: export LDFLAGS="${LDFLAGS} -L/usr/local/opt/zlib/lib" export CPPFLAGS="${CPPFLAGS} -I/usr/local/opt/zlib/include"# For pkg-config to find zlib you may need to set: export PKG_CONFIG_PATH="${PKG_CONFIG_PATH} /usr/local/opt/zlib/lib/pkgconfig"' >> ~/.bashrc

#如果用蘋果自帶的終端,請執行這個命令,把設置zlib的環境變量的命令添加至.bashrc配置文件中

echo '# For compilers to find zlib you may need to set: export LDFLAGS="${LDFLAGS} -L/usr/local/opt/zlib/lib" export CPPFLAGS="${CPPFLAGS} -I/usr/local/opt/zlib/include"# For pkg-config to find zlib you may need to set: export PKG_CONFIG_PATH="${PKG_CONFIG_PATH} /usr/local/opt/zlib/lib/pkgconfig"' >> ~/.zshrc

#如果用iTerm2 + Oh My Zsh,請執行這個命令,把設置zlib的環境變量的命令添加至.zshrc配置文件中

#設置zlib的環境變量的命令,具體含義筆者不懂!!!只知道很有用!!!

添加完畢后,執行以下命令或者關閉終端、iTerm窗口重新打開。

source ~/.bashrc

#如果用蘋果自帶的終端,請執行這個命令,使剛才設置的環境變量命令生效

source ~/.zshrc

#如果用iTerm2 + Oh My Zsh,請執行這個命令,使剛才設置的環境變量命令生效

至此,已經安裝并設置好zlib的環境變量,至少筆者看到網文的教程是這樣的。

4、安裝tcl-tk并設置配置文件的環境變量

brew install tcl-tk

#安裝tcl-tk(這個就是前面一直說的tk,非常重要!!!)

設置配置文件的環境變量的方法同樣有兩種:(但只筆者推薦使用第一種)

第一種:用vi編輯配置文件,手動添加

vi ~/.bashrc

#如果用蘋果自帶的終端,請執行這個命令,編輯.bashrc配置文件

vi ~/.zshrc

#如果用iTerm2 + Oh My Zsh,請執行這個命令,編輯.zshrc配置文件

打開~/.bashrc或者~/.zshrc配置文件后,在文件中開頭部分(這個最好是放在開頭,因為讀取配置文件時會先運行,所以不建議使用第二種方法,因為命令添加只會添加至文件最后)添加以下命令

#If you need to have tcl-tk first in your PATH run: export PATH="/usr/local/opt/tcl-tk/bin:$PATH"#For compilers to find tcl-tk you may need to set: export LDFLAGS="-L/usr/local/opt/tcl-tk/lib" export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"#For pkg-config to find tcl-tk you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"

編輯添加后,按esc鍵,然后手動輸入:wq(冒號:也需要輸入),以保存并推出編輯模式。

第二種:在蘋果自帶的終端或iTerm里用以下命令直接添加至配置文件(不建議使用這個方法,因為命令添加只會添加至文件最后,當然筆者沒試過放在最后效果怎么樣)

echo '#If you need to have tcl-tk first in your PATH run: export PATH="/usr/local/opt/tcl-tk/bin:$PATH"#For compilers to find tcl-tk you may need to set: export LDFLAGS="-L/usr/local/opt/tcl-tk/lib" export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"#For pkg-config to find tcl-tk you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"' >> ~/.bashrc

#如果用蘋果自帶的終端,請執行這個命令,把設置tcl-tk的環境變量的命令添加至.bashrc配置文件中

echo '#If you need to have tcl-tk first in your PATH run: export PATH="/usr/local/opt/tcl-tk/bin:$PATH"#For compilers to find tcl-tk you may need to set: export LDFLAGS="-L/usr/local/opt/tcl-tk/lib" export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"#For pkg-config to find tcl-tk you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"' >> ~/.zshrc

#如果用iTerm2 + Oh My Zsh,請執行這個命令,把設置tcl-tk的環境變量的命令添加至.zshrc配置文件中

#設置tcl-tk的環境變量的命令,具體含義筆者也不懂!!!只知道很有用!!!

添加完畢后,執行以下命令或者關閉終端、iTerm窗口重新打開。

source ~/.bashrc

#如果用蘋果自帶的終端,請執行這個命令,使剛才設置的環境變量命令生效

source ~/.zshrc

#如果用iTerm2 + Oh My Zsh,請執行這個命令,使剛才設置的環境變量命令生效

至此,已經安裝并設置好tcl-tk的環境變量,至少筆者看到網文的教程就是這樣的。(記得添加的位置最好在開頭部分,提醒四次應該都看到了吧?)

5、安裝pyenv并設置配置文件的環境變量

brew install pyenv

#安裝pyenv

設置配置文件的環境變量的方法同樣有兩種:

第一種:用vi編輯配置文件,手動添加

vi ~/.bashrc

#如果用蘋果自帶的終端,請執行這個命令,編輯.bashrc配置文件

vi ~/.zshrc

#如果用iTerm2 + Oh My Zsh,請執行這個命令,編輯.zshrc配置文件

打開~/.bashrc或者~/.zshrc配置文件后,在文件最后添加以下命令

#For Define environment variable PYENV_ROOT to point to the path where pyenv repo is cloned and add $PYENV_ROOT/bin to your $PATH for access to the pyenv command-line utility: export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH"#For Add pyenv init to your shell to enable shims and autocompletion. Please make sure eval "$(pyenv init -)" is placed toward the end of the shell configuration file since it manipulates PATH during the initialization: if command -v pyenv 1>/dev/null 2>&1; theneval "$(pyenv init -)" fi

編輯添加后,按esc鍵,然后手動輸入:wq(冒號:也需要輸入),以保存并推出編輯模式。

第二種:在蘋果自帶的終端或iTerm里用以下命令直接添加至配置文件

echo '#For Define environment variable PYENV_ROOT to point to the path where pyenv repo is cloned and add $PYENV_ROOT/bin to your $PATH for access to the pyenv command-line utility: export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH"#For Add pyenv init to your shell to enable shims and autocompletion. Please make sure eval "$(pyenv init -)" is placed toward the end of the shell configuration file since it manipulates PATH during the initialization: if command -v pyenv 1>/dev/null 2>&1; theneval "$(pyenv init -)" fi' >> ~/.bashrc

#如果用蘋果自帶的終端,請執行這個命令,把設置pynev的環境變量的命令添加至.bashrc配置文件中

echo '#For Define environment variable PYENV_ROOT to point to the path where pyenv repo is cloned and add $PYENV_ROOT/bin to your $PATH for access to the pyenv command-line utility: export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH"#For Add pyenv init to your shell to enable shims and autocompletion. Please make sure eval "$(pyenv init -)" is placed toward the end of the shell configuration file since it manipulates PATH during the initialization: if command -v pyenv 1>/dev/null 2>&1; theneval "$(pyenv init -)" fi' >> ~/.zshrc

#如果用iTerm2 + Oh My Zsh,請執行這個命令,把設置pynev的環境變量的命令添加至.zshrc配置文件中

#設置pynev的環境變量的命令,具體含義筆者都不懂!!!只知道很有用!!!

添加完畢后,執行以下命令或者關閉終端、iTerm窗口重新打開。

source ~/.bashrc

#如果用蘋果自帶的終端,請執行這個命令,使剛才設置的環境變量命令生效

source ~/.zshrc

#如果用iTerm2 + Oh My Zsh,請執行這個命令,使剛才設置的環境變量命令生效

至此,已經安裝并設置好pynev的環境變量,至少筆者看到GitHub的pyenv安裝說明就是這樣的。

6、安裝Python3.8.2(截止筆者寫完本文的最新版本)并設置默認Python版本

pyenv install -l

#查看可安裝的Python版本

pyenv install 3.8.2

# 安裝版本號為3.8.2的Python,查看可安裝的Python版本后自行選擇版本,筆者安裝的是Python3.8.2

pyenv global 3.8.2

#通過全局變量設置默認的python版本為3.8.2

至此,已經安裝并設置默認Python版本,至少筆者能成功解決Python3.8.2的這個問題。

7、檢查環境

(1)

pyenv version

#檢查默認的python版本,如果返回以下值即成功

3.8.2 (set by /Users/username/.python-version)

(2)

which python

#檢查實際上能夠運行命令而不必指定的Python路徑,如果返回以下值即成功

/Users/username/.pyenv/shims/python

(3)

python -V

#檢查當前使用的Python版本號(注意要用大寫的V),如果返回以下值即成功

Python 3.8.2

(4)

which pip

#檢查實際上能夠運行命令而不必指定的pip路徑,如果返回以下值即成功

/Users/username/.pyenv/shims/pip

(5)

pip -V

#檢查當前使用的pip版本號(注意要用大寫的V),如果返回以下值即成功

pip 20.1.1 from /Users/username/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pip (python 3.8)

pip的版本截止筆者寫完本文的最新是20.1.1,如果低于這個版本可以執行以下命令來更新。

pip install --upgrade pip

重點來了!!!重點來了!!!重點來了!!!

干貨中的干貨!!!干貨中的干貨!!!干貨中的干貨!!!

這是筆者最后一個掉進的坑,免得大家也掉坑!!!

筆者翻遍各種論壇和帖子都沒有提過這一點,本來看到返回的值不一樣時簡直面如死灰,但不知道哪里來的靈感讓筆者意外操作了這一點,然后所有問題終于迎刃而解了!!!

如果以上檢查環境的其中一步或者全部返回的值并不是我們期望的,那么請你再一次執行以下命令。

source ~/.bashrc

#如果用蘋果自帶的終端,請執行這個命令,使前面我們設置的所有環境變量命令生效

source ~/.zshrc

#如果用iTerm2 + Oh My Zsh,請執行這個命令,使前面我們設置的所有環境變量命令生效

沒錯!!!干貨中的干貨只是再一次執行使環境變量命令生效而已!!!

隨后筆者再一次檢查環境,所有返回的值都正確了。

至此,環境已經檢查完畢了。

8、檢查tkinter模塊運行

idle

#運行IDLE,如果IDLE窗口像下圖那樣沒有任何警告和以紅色字體打印的返回的值即成功

python -m tkinter -c "tkinter._test()"

#運行tcl-tk測試窗口,如果看到下圖這樣的測試窗口顯示Tcl/Tk version 8.6即成功

至此,恭喜你,你已經成功正確安裝tcl-tk和Python3.8.2了!!!

筆者隨后為了驗證實際效果,在PyCharm中再一次run這段代碼:

#導入海龜繪圖模塊 import turtle t = turtle.Pen() #這是一個循壞 for x in range(360):t.forward(x)t.left(59) ''' 測試一下段注釋 '''

終于可以跑這個圖形代碼了!!!

這不正是感動的感覺嗎???

簡直要哭好嗎!!!

終于可以繼續看視頻學習啦!!!

緊接而來的想法就是,筆者要記下來,不僅為了筆者自己,也為了其他可能會掉坑里的人。

于是這篇知乎文就誕生了,但也在這里結束了。

感謝前人走出來的路和經驗,解決這次的問題也參考了很多老前輩的經驗,文章末尾會列出幫助過筆者的帖子和文章。

感謝大家的耐心閱讀,希望這個方法對你有幫助。

P.S.

可以留意的事項:

1、想要成功,安裝前的環境要足夠干凈!

2、必須先安裝好tcl-tk再安裝Python!!

3、讓配置文件bashrc和zshrc生效非常重要!!!

參考資料:

西毒:iTerm2 + Oh My Zsh 打造舒適終端體驗?zhuanlan.zhihu.comMac上安裝Homebrew及常用命令?www.jianshu.comMac OS下使用pyenv管理Python版本?www.jianshu.comUnable to install tkinter with pyenv Pythons on MacOS?stackoverflow.compyenv install doesn't work with homebrew installed tcl-tk · Issue #1375 · pyenv/pyenv?github.comMacOS homebrew python 3.8.1 with tcl-tk (properly)?gist.github.comInstalled Python 3 on Mac OS X but its still Python 2.7?stackoverflow.comTkinter import error for pyenv Pythons #94?github.comPython not configured for Tk?stackoverflow.com[SOLVED] Cannot make pyenv work properly · Issue #427 · pyenv/pyenv?github.comClarify instructions in readme #481?github.compyenv/pyenv?github.com

總結

以上是生活随笔為你收集整理的path manipulation怎么解决_干货!终于!解决macOS下pyenv安装python3.8.2缺少tkinter模块的问题!...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久操精品在线 | 黄色小视频在线免费看 | 国产小毛片| av影片在线看 | 国产精品国产精品国产专区不卡 | 午夜影视av | 成人免费看视频 | 伊人日日夜夜 | 久久久久黄色 | 福利视频一区二区三区 | 亚洲精品一区二区三区四区五区 | 国产一级片播放 | 成年女人毛片 | 九色porny自拍 | 天天操狠狠干 | 国产成人主播 | 成人影视免费观看 | 17c精品麻豆一区二区免费 | 图片区偷拍区小说区 | 久久视频在线观看 | 日韩一区二区三区中文字幕 | 久久影院国产 | 插插插色综合 | 国产精品成人一区 | 日韩欧美综合视频 | 激情九月天 | 久久久久无码精品国产sm果冻 | mm131美女视频 | 水蜜桃色314在线观看 | 国产精品边吃奶边做爽 | 中文字幕视频网站 | 青青操网 | 日韩国产欧美一区二区 | a级片在线免费观看 | 久久av一区二区 | 亚洲国产精品自拍视频 | 亚洲熟妇中文字幕五十中出 | 国产一区二区三区视频免费在线观看 | 久久久久久久久久影院 | 韩国电影大尺度在线观看 | 久久黄色精品视频 | 精品无人区无码乱码毛片国产 | 自拍偷拍1 | 最新国产精品视频 | 色爱av综合网 | 生活片av| 黄色一级一级 | 久久国产一级片 | 美女扒开下面让男人捅 | 中文在线亚洲 | 少妇一级淫片免费放2 | 激情五月在线 | 久久55| jizz欧美性23 | 伊人丁香 | 蜜桃av色偷偷av老熟女 | 成人在线免费视频观看 | 国产成人影视 | 高清av在线 | 国产三级久久 | 亚洲午夜精品久久久久久人妖 | 中文字幕网站在线观看 | 我看黄色一级片 | mm131亚洲精品 | 毛片网站在线免费观看 | 午夜影院h| 国产精品久久久久久久免费看 | 日本亲子乱子伦xxxx50路 | 亚洲国产精品成人综合在线 | 久久久久久国产免费a片 | 久久久久国产精品熟女影院 | √天堂8资源中文在线 | 免费在线观看一区二区三区 | 天堂网免费视频 | 日韩精品一区二区三区不卡 | 亚洲狠狠干 | 久久久99久久 | 亚洲色图激情 | 亚洲成人av免费观看 | 日本黄色大片在线观看 | aaa天堂| 精品人伦一区二区三电影 | 91精品国产综合久久福利软件 | 99riav视频| 国产视频福利在线观看 | 毛片免费一区二区三区 | 亚洲无套| 国产成人免费看一级大黄 | 国产一级在线观看 | 国产又大又粗又爽的毛片 | 国产精品网站入口 | 日韩中文av在线 | 午夜色网 | a三级黄色片 | av色播 | 桃花色综合影院 | 天天爽夜夜爽人人爽 | 欧美精品a区 | 久久久精品日本 |