Я создал очень простой пакетный файл в качестве средства запуска для скрипта 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 - я сделал ваше предложение, используя: set path "%path%;C:\Users\user\Programs\Python\Python37-32"
предварительный вызов python в моем .bat, но на выходе был список PATH Env. в настоящее время перечислены переменные и сообщение о том, что адрес, который я пытался добавить, не определен.
у вас неправильный синтаксис. set
и setx
имеют разный синтаксис (да, очень запутанный). Смотрите set /?
и setx /?
Да, вы можете редактировать переменные среды в пакетном сценарии, используя следующую команду
setx path "%PATH%;C:\New Folder"
в зависимости от того, где установлен ваш python, который вы хотите использовать. Но это навсегда изменит путь
Вы можете обратиться к этой теме для получения дополнительной информации: stackoverflow.com/questions/3835518/…
PATH
. Он использует местныйPATH
со всеми путями к папкам система и ПользовательPATH
со всеми переменными среды, расширенными для установки ПользовательPATH
с добавлением C:\New Folder
. Эта строка действительно плохой и никогда не должна использоваться кем-либо, кто читает этот ответ. Это ужасно. Использование местныйPATH
для установки Пользователь или системаPATH
абсолютно НЕЛЬЗЯ, НИКОГДА.
Чтобы временно изменить переменную пути:
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 очень помог определить наилучшую стратегию в пакетном файле. Спасибо.
Если вы хотите распространять свой код, вам следует создать файл setup.py. Это легко сделать и сделать это действительно легко для ваших пользователей...
Возможный дубликат Может ли script.bat вносить изменения в переменную среды Windows PATH