我安装了一个导入 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 在哪里找到组件的程序等。