Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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_Windows_Batch File - Fatal编程技术网

Python 如何将整数设置为环境变量?

Python 如何将整数设置为环境变量?,python,windows,batch-file,Python,Windows,Batch File,我试图设置一个环境变量,如下所示,但是row有一个整数变量,并且遇到了以下错误,如何解决这个问题?或者有更好的方法使用python设置环境变量吗 row = 399 os.environ['BUILD_VER'] = row 错误:- os.environ['BUILD_VER'] = row File "C:\Python27\lib\os.py", line 420, in __setitem__ putenv(key, item) TypeError: must be

我试图设置一个环境变量,如下所示,但是row有一个整数变量,并且遇到了以下错误,如何解决这个问题?或者有更好的方法使用python设置环境变量吗

row = 399
os.environ['BUILD_VER'] = row
错误:-

    os.environ['BUILD_VER'] = row
  File "C:\Python27\lib\os.py", line 420, in __setitem__
    putenv(key, item)
TypeError: must be string, not int

环境变量只能包含字符串值。你必须这样做:

os.environ['BUILD_VER'] = str(row)
row = 399
print row
但是,您必须了解,您设置的任何环境变量仅对Python进程及其在设置后生成的任何进程有效

例如,您可以使用Python从shell脚本设置环境变量,因为shell生成Python,而Python无法为生成它的shell设置环境变量

如果试图将Windows环境变量设置为在Python中生成的值,则应该有一个Python脚本来打印该值,并让批处理文件执行该脚本。假设您的脚本
getver.py
如下所示:

os.environ['BUILD_VER'] = str(row)
row = 399
print row
然后批处理文件中会有如下内容:

FOR /F %v IN ('getver.py') DO SET BUILD_VER=%v
对不起,我应该说清楚,我尝试了row=str(row),但未设置环境变量

它是设置好的,但是,正如任何其他语言(
bash
include)一样,您正在修改当前进程的环境变量,因此,如果返回shell,更改是不可见的,这是正常的(相反,它对于从脚本启动的进程是可见的,因为环境变量通常复制到子进程)

您无法克服此限制;如中所述,无法设置父进程的环境变量。期间

人们通常做的是
source
一个shell脚本,直接在shell中设置环境-脚本在当前shell下运行,从而修改其环境变量。当然,这只适用于shell语言

一些程序使用的另一种替代方法(例如,请参见
ssh-agent
)是在标准输出上打印一个设置适当变量的简短shell脚本:

matteo@teokubuntu:~$ ssh-agent 
SSH_AUTH_SOCK=/tmp/ssh-xkn6jGSZAxoA/agent.5184; export SSH_AUTH_SOCK;
SSH_AGENT_PID=5185; export SSH_AGENT_PID;
echo Agent pid 5185;

然后,该程序将用作
eval$(programname)
,在当前shell中运行
programname
的输出。

So do
row=str(399)
-编译器正在准确地告诉您出了什么问题。Python是一种动态但强类型的语言。天哪,您读过错误消息吗?有什么不清楚的地方吗?@MatteoItalia-对不起,我应该说清楚,我试过row=str(row)但是环境变量不可设置这是一个完全不同的问题。环境变量是当前进程的本地变量(通常由子进程继承),这意味着您的代码只是在更改本地环境,这对父进程没有影响(我想它是shell)在脚本执行后检查环境的地方。@MatteoItalia-am在命令行上运行此脚本。.doing str(行)将其转换为另一个值,是否有办法使用任何调用语句在can use set BUILD\u VER=row中使用set BUILD\u VER=row抱歉,我试过了,但环境变量未获得set设置是否有办法使用任何调用语句在can use set BUILD\u VER=row中使用set BUILD\u VER=row中使用任何调用语句如果您试图从shell脚本设置环境变量,则不能使用Python。您必须从shell中执行此操作脚本。我从另一条评论中看到,您正试图从批处理文件中执行此操作。您应该在开始时这样说。有关如何执行此操作,请参阅我的最新编辑。您在哪里使用行值?批处理如何知道%v是什么?我正在尝试理解%v和行之间的链接?它不在unix计算机上,我正在windows计算机上进行尝试,我已经根据这里设置的值,有一个批处理文件可以运行吗?你还有其他想法吗?我试着用call(“set BUILD_VER={0}”)设置。format(row)但是这给Windows上的CompileAton Error带来了同样的问题,还有一些额外的限制,这些限制来自于shell更有限的事实。另外,你不能期望通过向Python解释器中抛出随机的东西来实现这一点。-请求很简单..我有一个值,它位于Python脚本的一个变量中..目标is将该值设置为BUILD\u VER as environment变量…我正在探索是否可以在同一个python脚本中执行此操作…如果无法执行,选项是什么。。。