
Instalei um programa que importou o pygtk. Funcionou bem no meu ambiente, mas um ambiente "em branco" (por exemplo, um novo usuário) não funcionaria.
Eu determinei que era devido ao PATH. A resolução foi desconcertante.
Meu PATH foi definido assim:
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
O padrão foi definido assim:
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
A única diferença é a ordem. Especificamente eu coloquei /usr/bin
acima /usr/local/bin
.
Sem esta pequena alteração, os erros do programa com:
import pygtk
ImportError: No module named pygtk
Não achei que a ordem do PATH fosse tão importante, mas aparentemente é. Por que o sistema se importaria tanto? Ele está encontrando e tentando executar o programa antes de encontrar o pygtk?
Responder1
A ordem do PATH pode ser muito importante: quando você executa um programa, o shell procura o nome do programa em cada um dos componentes do seu caminho, começando pelo primeiro. Se existirem dois programas com o mesmo nome em dois dos caminhos (por qualquer motivo), ele usará aquele que encontrar primeiro. Parece que no seu caso você realmente tem duas cópias de algum programa, embora eu não saiba se é python ou algo como um programa que informa ao python onde encontrar componentes, etc.