
Я установил программу, которая импортировала 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 может быть весьма важен: когда вы запускаете программу, оболочка ищет имя программы в каждом из компонентов вашего пути, начиная с первого. Если две программы с одинаковым именем существуют в двух путях (по любой причине), она будет использовать ту, которую найдет первой. Похоже, в вашем случае у вас действительно есть две копии какой-то программы, хотя я не знаю, python это или что-то еще вроде программы, которая сообщает python, где найти компоненты и т. д.