由于 PATH 顺序而无法找到 pygtk?默认 PATH 在哪里定义?

由于 PATH 顺序而无法找到 pygtk?默认 PATH 在哪里定义?

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

相关内容