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

281
Mike Dannyboy

Я установил программу, которая импортировала 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

1 ответ на вопрос

1
simpleuser

Порядок следования PATH может быть очень важным: когда вы запускаете программу, оболочка ищет имя программы в каждом из компонентов вашего пути, начиная с первого. Если две программы с одинаковым именем существуют в двух путях (по какой-либо причине), они будут использовать ту, которая найдена первой. В вашем случае кажется, что на самом деле у вас есть две копии какой-то программы, хотя я не знаю, является ли это python или что-то вроде программы, которая сообщает python, где искать компоненты и т. Д.

Ах, он * прекращает * поиск, как только найдет совпадение. По некоторым причинам я думаю, что это продолжится, но это немного глупо в ретроспективе; Не знаю, почему я думал, что так будет. Спасибо! Mike Dannyboy 6 лет назад 0

Похожие вопросы