Не удалось найти pygtk из-за порядка PATH? Где определен путь по умолчанию?


1

Я установил программу, которая импортировала pygtk. Это нормально работало в моей среде, но «пустая» среда (например, новый пользователь) не работала.

Я решил, что это из-за 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, где искать компоненты и т. Д.


Ах, он прекращает поиск, как только найдет совпадение. По какой-то причине я думаю, что это будет продолжаться, но это немного глупо в ретроспективе; Не знаю, почему я думал, что так будет. Спасибо!
Майк Дэннибой
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.