Не обновляется переменная Path
Цитата: Никита от 29.11.2021, 18:57Всеми привет..
Сделал 4 bat-ника, каждый из них устанавливает нужный мне инструментарий.
Конкретно в данном примере первым из них в тихом режиме ставится Python3.6 а после него нужно установить через "pip install" модуль.
Если через мою программу вызвать установку Python всё сработает, как надо.
Но после этого, при попытке установить модуль, получаю "pip не является внутренней или внешней командой".
И теперь самое интересное, если я запущу bat-ник из папки, то модуль уставноится без проблем, а вот запуск этого bat-ника из моего приложения не устанавливает его до тех пор, пока я вручную не закрою и не открою свою программу.
Понимая, что pip отрабатывает корректно после ручного перезапуска программы, пробовал прописать Restart() для перезапуска, но это не помогло..
Только ручной перезапуск даёт возможность, пользоваться только что установленным Python..Использовать код на запуск командной строки из приложения, без использования bat-ников я тоже пробовал.. Результат тот же "pip не является внутренней или внешней командой" пока вручную не перезапущу программу.[spoiler title="Пример на видео"][/spoiler]
Всеми привет..
Сделал 4 bat-ника, каждый из них устанавливает нужный мне инструментарий.
Конкретно в данном примере первым из них в тихом режиме ставится Python3.6 а после него нужно установить через "pip install" модуль.
Если через мою программу вызвать установку Python всё сработает, как надо.
Но после этого, при попытке установить модуль, получаю "pip не является внутренней или внешней командой".
И теперь самое интересное, если я запущу bat-ник из папки, то модуль уставноится без проблем, а вот запуск этого bat-ника из моего приложения не устанавливает его до тех пор, пока я вручную не закрою и не открою свою программу.
Понимая, что pip отрабатывает корректно после ручного перезапуска программы, пробовал прописать Restart() для перезапуска, но это не помогло..
Только ручной перезапуск даёт возможность, пользоваться только что установленным Python..Использовать код на запуск командной строки из приложения, без использования bat-ников я тоже пробовал.. Результат тот же "pip не является внутренней или внешней командой" пока вручную не перезапущу программу.
Цитата: Adler от 29.11.2021, 20:06Приветствую.
Цитата: Никита от 29.11.2021, 18:57Но после этого, при попытке установить модуль, получаю "pip не является внутренней или внешней командой".
И теперь самое интересное, если я запущу bat-ник из папки, то модуль уставноится без проблем, а вот запуск этого bat-ника из моего приложения не устанавливает его до тех пор, пока я вручную не закрою и не открою свою программу.Это логично, т.к.переменное окружение используется то, которое было на момент запуска процесса. На такое натыкался, но не в процессе разработки, а использования различного стороннего ПО. Просто перезапускал программу. Банально запущенный cmd не подтянет актуальное переменное окружение, которое изменилось с момента его запуска.
Цитата: Никита от 29.11.2021, 18:57Понимая, что pip отрабатывает корректно после ручного перезапуска программы, пробовал прописать Restart() для перезапуска, но это не помогло..
А если перезапуск вызвать через командную строку запущенную через Proces()?
Задачка на самом деле интересная, но как это можно решить пока в голову не приходит...
Приветствую.
Цитата: Никита от 29.11.2021, 18:57Но после этого, при попытке установить модуль, получаю "pip не является внутренней или внешней командой".
И теперь самое интересное, если я запущу bat-ник из папки, то модуль уставноится без проблем, а вот запуск этого bat-ника из моего приложения не устанавливает его до тех пор, пока я вручную не закрою и не открою свою программу.
Это логично, т.к.переменное окружение используется то, которое было на момент запуска процесса. На такое натыкался, но не в процессе разработки, а использования различного стороннего ПО. Просто перезапускал программу. Банально запущенный cmd не подтянет актуальное переменное окружение, которое изменилось с момента его запуска.
Цитата: Никита от 29.11.2021, 18:57Понимая, что pip отрабатывает корректно после ручного перезапуска программы, пробовал прописать Restart() для перезапуска, но это не помогло..
А если перезапуск вызвать через командную строку запущенную через Proces()?
Задачка на самом деле интересная, но как это можно решить пока в голову не приходит...
Цитата: Adler от 29.11.2021, 20:13P.S. Возможно это можно реализовать через GetEnvironmentVariable(String, EnvironmentVariableTarget) где в качестве EnvironmentVariableTarget задавать
EnvironmentVariableTarget.UserилиEnvironmentVariableTarget.Machine, а потом полученный результат загружать через SetEnvironmentVariable(String, String, EnvironmentVariableTarget) сEnvironmentVariableTarget.Processв качестве EnvironmentVariableTarget.
P.S. Возможно это можно реализовать через GetEnvironmentVariable(String, EnvironmentVariableTarget) где в качестве EnvironmentVariableTarget задавать СкопированоEnvironmentVariableTarget.User или СкопированоEnvironmentVariableTarget.Machine, а потом полученный результат загружать через SetEnvironmentVariable(String, String, EnvironmentVariableTarget) с СкопированоEnvironmentVariableTarget.Process в качестве EnvironmentVariableTarget.
Цитата: Никита от 30.11.2021, 14:34Привет, Adler.
Решил совсем другим костылем, но как поизучаю твои примеры, попробую и их..
Решил проблему добавлением пути в path ещё перед запуском программы..
Привет, Adler.
Решил совсем другим костылем, но как поизучаю твои примеры, попробую и их..
Решил проблему добавлением пути в path ещё перед запуском программы..