Можно ли обрабатывать переменные среды в пакетном сценарии?

Я создал очень простой пакетный файл в качестве средства запуска для скрипта Python, однако он не работает нормально в зависимости от настройки «PATH» для пользователя (Python 2 x Python 3). Поскольку изменение PATH может привести к проблемам с другими приложениями на основе Python 2, могу ли я внести какое-либо обновление в .bat, чтобы временно изменить PATH во время работы скрипта Py?
Идея состоит в том, чтобы использовать пакет для минимального вмешательства пользователя в настройку системы (предпочтительно только двойной щелчок). В случае да, что я мог сделать?

@echo off
title ###Beta Script Launcher###
python myscript.py 
pause

если вы измените переменную %PATH% с помощью команды set, измененное значение будет действительным только в текущем процессе cmd и его дочерних процессах, которые выполняются после изменения. Независимо созданные процессы по-прежнему будут иметь исходное значение. setx работает наоборот: меняет значение для любых самостоятельно запущенных процессов в будущем.

Stephan 31.05.2019 10:15

@Stephan - я сделал ваше предложение, используя: set path "%path%;C:\Users\user\Programs\Python\Python37-32" предварительный вызов python в моем .bat, но на выходе был список PATH Env. в настоящее время перечислены переменные и сообщение о том, что адрес, который я пытался добавить, не определен.

SantoS 03.06.2019 10:24

у вас неправильный синтаксис. set и setx имеют разный синтаксис (да, очень запутанный). Смотрите set /? и setx /?

Stephan 03.06.2019 10:27
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
399
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Да, вы можете редактировать переменные среды в пакетном сценарии, используя следующую команду

setx path "%PATH%;C:\New Folder" 

в зависимости от того, где установлен ваш python, который вы хотите использовать. Но это навсегда изменит путь

Вы можете обратиться к этой теме для получения дополнительной информации: stackoverflow.com/questions/3835518/…

CodePhobia 31.05.2019 08:30
НЕТ НЕТ и еще раз НЕТ. Эта строка развращает переменная окружения ПользовательPATH. Он использует местныйPATH со всеми путями к папкам система и ПользовательPATH со всеми переменными среды, расширенными для установки ПользовательPATH с добавлением C:\New Folder. Эта строка действительно плохой и никогда не должна использоваться кем-либо, кто читает этот ответ. Это ужасно. Использование местныйPATH для установки Пользователь или системаPATH абсолютно НЕЛЬЗЯ, НИКОГДА.
Mofi 31.05.2019 13:41
Ответ принят как подходящий

Чтобы временно изменить переменную пути:

path c:\mydir;%path%

документация

c:\srv> path /?
Displays or sets a search path for executable files.

PATH [[drive:]path[;...][;%PATH%]
PATH ;

Type PATH ; to clear all search-path settings and direct cmd.exe to search
only in the current directory.
Type PATH without parameters to display the current path.
Including %PATH% in the new path setting causes the old path to be
appended to the new setting.

однако обычный способ сделать это для python — создать виртуальную среду (https://pypi.org/project/virtualenvwrapper-win/)

mkvirtualenv myenv
.. install everything in this environment ..

а затем используйте его в своем стартовом скрипте

@echo off
title ###Beta Script Launcher###
call workon myenv
python myscript.py 
pause

(отказ от ответственности, я один из сопровождающих virtualenvwrapper-win)

Я не использовал инструмент virtualenv, поскольку большинство пользователей могут не использовать пакеты py, но синтаксис пути cmd очень помог определить наилучшую стратегию в пакетном файле. Спасибо.

SantoS 04.06.2019 09:59

Если вы хотите распространять свой код, вам следует создать файл setup.py. Это легко сделать и сделать это действительно легко для ваших пользователей...

thebjorn 04.06.2019 10:58

Другие вопросы по теме

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

Django UnicodeEncodeError при регистрации sql с unicode из BinaryField
Как я могу сделать несколько случайных весов для портфелей?
Запуск скрипта через подпроцесс зависает, когда скрипт запускает асинхронный цикл событий внутри многопроцессорных рабочих процессов
Как изменить имя файла, которое автоматически содержит дату в python
Как я могу улучшить этот алгоритм угадывания?
Вложенные списки в маленькие списки (разделенные по категориям)
Как анализировать значения нескольких индексов и создавать файл csv при анализе данных json в python
У меня есть пара команд Linux, которые я хочу запустить на компьютере с Windows. Как запускать команды Linux из Python в Windows
Arxiv API не принимает все условия запроса
Для ключевых слов (строк) в одном столбце и значений (поплавков) в другом я хочу подсчитать количество ключевых слов в порядке, которые попадают на единицу диапазона значения