Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以在批处理脚本中处理环境变量?_Python_Python 3.x_Batch File_Environment Variables - Fatal编程技术网

Python 是否可以在批处理脚本中处理环境变量?

Python 是否可以在批处理脚本中处理环境变量?,python,python-3.x,batch-file,environment-variables,Python,Python 3.x,Batch File,Environment Variables,我创建了一个非常简单的批处理文件作为python脚本的启动程序,但是根据用户的“路径”设置(Python2 x Python3),它不能正常工作。 由于更改路径会给其他基于Python 2的应用程序带来问题,我是否可以在.bat中进行任何更新,以便在Py脚本运行时临时更改路径? 其想法是使用批处理,以使系统设置中来自用户的干扰最小(最好仅双击)。 如果是,我该怎么办 @echo off title ###Beta Script Launcher### python myscript.py pa

我创建了一个非常简单的批处理文件作为python脚本的启动程序,但是根据用户的“路径”设置(Python2 x Python3),它不能正常工作。 由于更改路径会给其他基于Python 2的应用程序带来问题,我是否可以在.bat中进行任何更新,以便在Py脚本运行时临时更改路径?
其想法是使用批处理,以使系统设置中来自用户的干扰最小(最好仅双击)。 如果是,我该怎么办

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

是的,您可以使用以下命令在批处理脚本中编辑环境变量

setx path "%PATH%;C:\New Folder" 
基于您希望使用的python的安装位置。
但这将永久更改路径

以临时更改路径变量:

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实现这一点的正常方法是创建一个virtualenv()

然后在开始脚本中使用它

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

(免责声明,我是VirtualEnvrapper win的维护者之一)

您可能希望参考此线程了解更多信息:否,否,再次否。此行会损坏用户
路径
环境变量。它使用本地
路径
和系统的所有文件夹路径以及用户
路径
,并扩展所有环境变量以设置用户
路径
,并附加
C:\New folder
。这句话真的,真的很糟糕,任何人都不应该读这句话。太可怕了。使用本地
PATH
设置用户或系统
PATH
是绝对禁止的,永远不会。如果使用
set
命令更改
%PATH%
变量,则更改的值将仅在当前
cmd
进程及其更改后执行的子进程中有效。独立创建的流程仍将具有原始价值
setx
的工作原理是另一种:它会在将来更改任何独立启动的进程的值。@Stephan-我提出建议时使用了:
set path”%path%;C:\Users\user\Programs\Python\Python 37-32“
在my.bat中调用Python之前,输出的是路径Env的列表。当前列出的变量以及我尝试添加的地址的消息未定义。您的语法错误
set
setx
有不同的语法(是的,非常混乱)。请参见
set/?
setx/?
我没有使用virtualenv工具,因为大多数用户可能不习惯于安装py数据包,但cmd path语法在定义批处理文件中的最佳策略方面帮助很大。谢谢。如果你想分发你的代码,你应该创建一个setup.py文件。这很容易做到,并且让你的用户非常容易。。。
@echo off
title ###Beta Script Launcher###
call workon myenv
python myscript.py 
pause