coolwolf0: (Default)
coolwolf0 ([personal profile] coolwolf0) wrote2019-04-16 06:20 pm

Ну тупыыые...

Во-первых, предупреждаю не-компьютерных читателей этого блога, что данная запись содержит чисто техническую информацию.
Во-вторых, предупреждаю шибко чувствительных, что тут я буду груб и несдержан.

Итак, я пол-дня про%%%ался с простенькой задачкой: проинсталлировать на виндовом хосте некий Пайтон-package и при этом не задеть настройки PYTHONPATH на уровне пользователя. Для читателей, программирующих под нормальными системами объясню: СЯУ, что в винде есть три уровня переменных окружения. Есть уровень программы (ну типа шелла), есть пользовательский и есть системный. Красиво, да? Логично, правда ведь? Это я пока без сарказма. То есть в плане глобальной архитектуры кто-то подумал и выдал правильное предложение. Что же мы имеем с точки зрения программиста? Оказывается, переменные уровня "пользователь" и "система" хранятся в регистри. Ну ладно, пока что тоже логично. И вот тут выпрыгивает испанская инквизиция: программисту предоставлена возможность установить значение переменной, но он не может удалить переменную из адресного пространства "пользователь" или "система". Точнее, он должен это сделать как в пошлом анекдоте про гинеколога. Если значение переменной задается элегантным оператором SETX <переменная> <значение>, то удаление переменной надо делать вызовом редактора регистри (концовку фразы надо говорить с интонацией Семена Графмана "шееева шееекель, б%%ть"). Вы думаете, что удалив что-то, Винда просто выполнила требуемую операцию? Зайин (то есть "херушки")! В форумах люди пишут, что для завершения процедуры очистки надо ... (вы не поверите) перезагрузить систему! Чтоб они всем Майкрософтом так в лифте ехали, перезагружая его после каждого выбора этажа (нецензурная брань на разных языках).

Я вообще всегда подозревал, что у майкрософта не очень доброе отношение к сторонним программистам, но такого иезуитского дебилизма не мог себе представить.

[identity profile] the-drmad.livejournal.com 2019-04-16 04:41 pm (UTC)(link)
> В форумах люди пишут, что для завершения процедуры очистки надо ... (вы не поверите) перезагрузить систему!

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

[identity profile] the-drmad.livejournal.com 2019-04-17 06:46 am (UTC)(link)
Уточни проблему. Вроде бы с переменными можно делать очень много чего, главное помнить, что дочернее приложение наследует среду у родителя. Если запуск через иконку, то родитель Иксплорер. Если вручную, то соответственно, CMD. Можно вообще индивидуального родителя сделать и менять в этом родителе для ребенка переменные как угодно.