1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .