How to Set an Integer as a Environment Variable?

How to Set an Integer as a Environment Variable?

I am trying to set an environment variable as below ,however row has an integer variable and running into following error,how to fix this?or is there a better way to set the environment variable using python

row = 399
os.environ['BUILD_VER'] = row

ERROR:-

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

2 Answers

Environment variables can only contain string values. You must do something like this:

os.environ['BUILD_VER'] = str(row)

However, you have to understand that any environment variable you set will only take effect for the Python process and any process that it spawns after setting it.

You can not use Python to set environment variable from a shell script, for instance, because the shell spawns Python and Python cannot set environment variables for the shell that spawned it.

If you are trying to set a Windows environment variable to a value that you are generating in Python, you should have a Python script that prints the value and have your batch file execute the script. Let's say your script getver.py looks like this:

row = 399
print row

Then your batch file would have something like this in it:

FOR /F %v IN ('getver.py') DO SET BUILD_VER=%v
8

sorry i should have made it clear,i tried row=str(row) but environment variableisnot set

It is set, but, as it would happen for any other language (bash included), you are modifying environment variables of the current process, so it's normal that, if you come back to the shell, the change is not visible (it would be visible, instead, to processes started from your script, since environment variables are normally copied to child processes).

You cannot overcome this restriction; as explained in several other answers, it's not possible to set environment variables of the parent process. Period.

What people normally do is to source a shell script to set the environment directly in the shell - the script runs under the current shell and thus modifies its environment variables. This of course can work only for the shell language.

Another alternative that some programs use (see e.g. ssh-agent) is to print on the standard output a short shell script that sets the appropriate variables:

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;

The program, then, is intended to be used as eval $(programname), which runs programname's output in the current shell.

3

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Sarah Jenkins
Author

Sarah Jenkins

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.