
我安裝了一個導入 pygtk 的程式。它在我的環境中工作正常,但「空白」環境(例如新用戶)無法工作。
我確定這是由於 PATH 造成的。但該決議令人困惑。
我的 PATH 設定如下:
PATH=/usr/lib/qt-3.3/bin
PATH=$PATH:/bin
PATH=$PATH:/usr/bin
PATH=$PATH:/usr/local/bin #******
PATH=$PATH:/sbin
PATH=$PATH:/usr/sbin
PATH=$PATH:/usr/local/sbin
PATH=$PATH:/home/td69386/bin
預設設定如下:
PATH=/usr/lib/qt-3.3/bin
PATH=$PATH:/usr/local/bin #*****
PATH=$PATH:/bin
PATH=$PATH:/usr/bin
PATH=$PATH:/usr/local/sbin
PATH=$PATH:/usr/sbin
PATH=$PATH:/sbin
PATH=$PATH:/home/td69386/bin
唯一的區別是順序。具體我放在/usr/bin
上面了/usr/local/bin
。
如果沒有這個微小的改變,程式會出現以下錯誤:
import pygtk
ImportError: No module named pygtk
我不認為 PATH 排序那麼重要,但顯然它是重要的。為什麼系統會這麼關心?它是否在找到 pygtk 之前找到並嘗試執行該程式?
答案1
PATH 的順序非常重要:當您執行程式時,shell 從第一個開始在路徑的每個元件中搜尋程式名稱。如果兩個路徑中存在兩個同名程式(無論出於何種原因),它將使用第一個找到的程式。在你的情況下,你實際上確實有某個程式的兩個副本,儘管我不知道它是python還是其他東西,例如告訴python在哪裡找到組件的程式等。