Вы должны войти, чтобы создавать сообщения и темы.

Не обновляется переменная Path

Всеми привет..
Сделал 4 bat-ника, каждый из них устанавливает нужный мне инструментарий.
Конкретно в данном примере первым из них в тихом режиме ставится Python3.6 а после него нужно установить через "pip install" модуль.
Если через мою программу вызвать установку Python всё сработает, как надо.
Но после этого, при попытке установить модуль, получаю "pip не является внутренней или внешней командой".
И теперь самое интересное, если я запущу bat-ник из папки, то модуль уставноится без проблем, а вот запуск этого bat-ника из моего приложения не устанавливает его до тех пор, пока я вручную не закрою и не открою свою программу.
Понимая, что pip отрабатывает корректно после ручного перезапуска программы, пробовал прописать Restart() для перезапуска, но это не помогло..
Только ручной перезапуск даёт возможность, пользоваться только что установленным Python..Использовать код на запуск командной строки из приложения, без использования bat-ников я тоже пробовал.. Результат тот же "pip не является внутренней или внешней командой" пока вручную не перезапущу программу.

Пример на видео

Приветствую.

Цитата: Никита от 29.11.2021, 18:57

Но после этого, при попытке установить модуль, получаю "pip не является внутренней или внешней командой".
И теперь самое интересное, если я запущу bat-ник из папки, то модуль уставноится без проблем, а вот запуск этого bat-ника из моего приложения не устанавливает его до тех пор, пока я вручную не закрою и не открою свою программу.

Это логично, т.к.переменное окружение используется то, которое было на момент запуска процесса. На такое натыкался, но не в процессе разработки, а использования различного стороннего ПО. Просто перезапускал программу. Банально запущенный cmd не подтянет актуальное переменное окружение, которое изменилось с момента его запуска.

Цитата: Никита от 29.11.2021, 18:57

Понимая, что pip отрабатывает корректно после ручного перезапуска программы, пробовал прописать Restart() для перезапуска, но это не помогло..

А если перезапуск вызвать через командную строку запущенную через Proces()?

Задачка на самом деле интересная, но как это можно решить пока в голову не приходит...

P.S. Возможно это можно реализовать через  GetEnvironmentVariable(String, EnvironmentVariableTarget) где в качестве EnvironmentVariableTarget задавать СкопированоEnvironmentVariableTarget.User или СкопированоEnvironmentVariableTarget.Machine, а потом полученный результат загружать через SetEnvironmentVariable(String, String, EnvironmentVariableTarget) с СкопированоEnvironmentVariableTarget.Process в качестве EnvironmentVariableTarget.

Привет, Adler.
Решил совсем другим костылем, но как поизучаю твои примеры, попробую и их..
Решил проблему добавлением пути в path ещё перед запуском программы..