我有時運行Python腳本文件,報錯No module named what。我就想當然地用pip3 install what命令安裝這個package。安裝完,運行程序仍然報錯:No module named what。
我想我安裝Python package的方法不對。
問題1:如何安裝Python module/Python package我需要到github.com網站去搜索what,找到對應的repository(即github上的文件夾)。查看readme.md文檔,看看作者說如何安裝。
以rtmidi為例,這是一個C++程序。需要走低一層,使用homebrew的package安裝工具(我的電腦是Mac,Mojave 10.14.5):brew install what。
因為Homebrew是跨多個編程語言的平台,上面可以運行C、Python等多個編程語言編譯器、解釋器。pip3只是Python3自帶的package 安裝工具。
而python-rtmidi是rtmidi的Python接口,這樣人們可在Python使用rtmidi的功能。用pip3安裝。
可是import還是會失敗:No module named rtmidi。
這時,可以查很多資料,但是對我來說最合適的方法是:重裝Python。
brew reinstall python
然後——
pip3 install python-rtmidi
我一般忘記重裝Python,查很多資料。Geek們的回答在PATH上如何修正。這一直是我的弱點,Python有很多版本,2.7,……,3.7,3.8,3.9,我總懷疑自己哪裡弄亂了。又自知不明白,乃至於常常會忘記重裝Python這件事,在系統路徑這件事上糾纏不休,查詢啊修改啊,終歸像是拆東墻補西墻,走不通,還得復原,最後想起來重裝Python,已耗去十多小時。所以,系統路徑這個謎,我列舉信息如下。(本例python-rtmidi安裝在/usr/local/lib/python3.8/site-packages。)
brew的系統路徑參數是PATH[5],查看命令是echo $PATH。Python3系統路徑參數PYTHONPATH,查看這個參數的方法有2:
方法1:在Terminal中輸入命令python3,然後——
>>> import sys
>>> print(sys.path)
方法2:
python3 -m site
修改PYTHONPATH參數方法有2:
1)用sys module修改[1]
>>>import sys
>>>sys.path.append('/usr/local/lib/python3.8/site-packages')
. . .
>>>import what
2)修改.bash_profile文件[5]。
1 打開Terminal。
2 輸入命令:open .bash_profile
3 在彈出的文件中,最後加一行:
export PYTHonPATH=$PYTHONPATH:/usr/local/lib/python3.8/site-packages
4 保存文件,重啟Terminal。
查看pip3安裝的package的目錄[4]:pip3 show what(pip3 uninstall what,系統的反應是提問以確認,此時結果信息中也顯示路徑。)如果我想查看我到底安裝了哪些Python module——
Python package可以用命令[2]:pip3 freeze。
brew package則安裝於一個或幾個固定目錄下(如/usr/local/Cellar/)[6],可以在Terminal用查看命令ls。
如果一個module安裝成功,import也成功,但還是想知道安裝在哪裡,還有一種正規的方法[3]:
>>> import what >>> what.__file__
參考:
[1]Dan Nanni, How to change sys.path or PYTHonPATH in Python, September 23, 2020, https://www.xmodulo.com/change-syspath-pythonpath-python.html
[2]Where Are Python Packages Installed, May-19, 2021, https://www.delftstack.com/howto/python/where-are-python-packages-installed/
[3]Manogna, "How do I find the location of Python module sources?", 19-Dec-2017, https://www.tutorialspoint.com/How-do-I-find-the-location-of-Python-module-sources
[4]"How do I find the location of my Python site-packages directory?", https://stackoverflow.com/questions/122327/how-do-i-find-the-location-of-my-python-site-packages-directory
[5]entrepaul, "Permanently add a directory to PYTHONPATH?", https://stackoverflow.com/questions/3402168/permanently-add-a-directory-to-pythonpath
[6]How to Find Where Homebrew Packages Are Installed on Mac, OSXDaily, https://osxdaily.com/2018/07/05/where-homebrew-packages-installed-location-mac/



