Santa
Santa

Reputation: 11547

Temporary PYTHONPATH in Windows

How do I set, temporarily, the PYTHONPATH environment variable just before executing a Python script?

In *nix, I can do this:

$ PYTHONPATH='.' python scripts/doit.py

In Windows, this syntax does not work, of course. What is the equivalent, though?

Upvotes: 6

Views: 8624

Answers (5)

cup
cup

Reputation: 8237

Windows can localize variables within the script. This will save having to set PYTHONPATH before running. It will also help when different scripts require different conflicting PYTHONPATHs.

setlocal
set PYTHONPATH=.
python.exe  scripts\doit.py
endlocal

For more info, check MS documentation

Upvotes: 0

Alex Martelli
Alex Martelli

Reputation: 881555

To set and restore an environment variable on Windows' command line requires an unfortunately "somewhat torturous" approach...:

SET SAVE=%PYTHONPATH%
SET PYTHONPATH=.
python scripts/doit.py
SET PYTHONPATH=%SAVE%

You could use a little auxiliary Python script to make it less painful, e.g.

import os
import sys
import subprocess

for i, a in enumerate(sys.argv[1:]):
    if '=' not in a: break
    name, _, value = a.partition('=')
    os.environ[name] = value

sys.exit(subprocess.call(sys.argv[i:]))

to be called as, e.g.,

python withenv.py PYTHONPATH=. python scripts/doit.py

(I've coded it so it works for any subprocess, not just a Python script -- if you only care about Python scripts you could omit the second python in the cal and put 'python' in sys.argv[i-1] in the code, then use sys.argv[i-1:] as the argument for subprocess.call).

Upvotes: 9

Mark Tolonen
Mark Tolonen

Reputation: 177481

How temporarily? If you open a Windows console (cmd.exe), typing:

set PYTHONPATH=.

will change PYTHONPATH for that console only and any child processes created from it. Any python scripts run from this console will use the new PYTHONPATH value. Close the console and the change will be forgotten.

Upvotes: 10

Dean Harding
Dean Harding

Reputation: 72648

You use SET on Windows:

SET PYTHONPATH=.
python scripts/doit.py

Upvotes: 1

Kevin Le - Khnle
Kevin Le - Khnle

Reputation: 10857

In Windows, you can set PYTHONPATH as an environment variable, which has a GUI front end. On most versions of Windows, you can launch by right click on My Computer and right click Properties.

Upvotes: 1

Related Questions