Не удалось найти pygtk из-за порядка PATH? Где определен путь по умолчанию?
Я установил программу, которая импортировала pygtk. Это нормально работало в моей среде, но "пустая" среда (например, новый пользователь) не работала.
Я решил, что это из-за ПУТИ. Решение было озадачивающим, хотя.
Мой ПУТЬ был установлен так:
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, где искать компоненты и т. Д.