看了某人的筆記但還是自己試了一個早上才 有 點 明 白
我之前懵逼的原因(雖然現(xiàn)在還是懵逼的)在于 原來當(dāng)前程序的目錄的意思不是python3的所在目錄啊...
首先,為了便于試驗,我先查了顯示/隱藏文件的代碼
$ defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder
$ defaults write com.apple.finder AppleShowAllFiles -boolean false ; killall Finder
然后我試了一下查看路徑
$ echo 是可以查看已有設(shè)置的代碼
appledeMacBook:~ JEZAU$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin```
運行python3的時候在第一個目錄中找到了,于是直接運行,運行的是源文件
然后我試了一下,發(fā)現(xiàn)不管你cd進(jìn)入了哪個目錄,都只在這幾個文件夾中尋找
然后是我之前用過的os的path函數(shù)
os.path.abspath('.')
'/Users/apple'```
這個返回的是命令行目前所在的目錄,就是進(jìn)入python之前所在的目錄,和python文件的位置沒有關(guān)系
我還莫名其妙這個是怎么冒出來的..
而os.environ中的顯示的環(huán)境變量就是系統(tǒng)的環(huán)境變量,就是
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
然后是當(dāng)在python里import 模塊時,導(dǎo)入的是哪里的模塊
對于所說的sys包含的四種目錄不是很懂,于是把我的jieba庫在各種文件夾中移動試驗。
>>> import sys
>>> sys.path
['','/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python36.zip',
'/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6',
'/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload',
'/usr/local/lib/python3.6/site-packages']
1). 第一個路徑往往是一個空項,它對應(yīng)當(dāng)前目錄,就是你進(jìn)入python之前命令行所在的目錄。(python所在目錄是不行的)
據(jù)說如果有腳本目錄(python解析器所在目錄)則會是腳本目錄
2). 第二個是PYTHONPATH目錄,在運行python之前設(shè)置,如果沒設(shè)置就會顯示一個zip文件 我也不知道那個是什么,是一個不存在的文件
代碼為export PYTHONPATH=$PYTHONPATH:path
3). 標(biāo)準(zhǔn)模塊庫(如os等)所在目錄(不一定只有一個)以及拓展包目錄
4). 可以通過 sys.path.append('') 來自行添加
這些都是python在安裝的時候就設(shè)置好了的 不知道可不可以改
pip的安裝路徑也是安裝的時候在環(huán)境變量中設(shè)定好的
在我的試驗中我奇怪的是,不知道python下載的時候自帶的替身是怎么制作的,我制作的替身打開會和源文件一樣。終端打開permission denied/command not found,看一下它的替身里面是空的,與源文件不一樣,我就把里面東西都刪啦,結(jié)果 大小不一樣 估計是經(jīng)過了什么處理
然后為什么把源文件變了地方就不能which python了 反正就是 strange