Temporary PYTHONPATH in Windows

后端 未结 4 2082
感情败类
感情败类 2021-01-13 04:25

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

In *nix, I can do this:

$ PYTHONPATH=\'.\' pyth         


        
相关标签:
4条回答
  • 2021-01-13 05:10

    You use SET on Windows:

    SET PYTHONPATH=.
    python scripts/doit.py
    
    0 讨论(0)
  • 2021-01-13 05:13

    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).

    0 讨论(0)
  • 2021-01-13 05:13

    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.

    0 讨论(0)
  • 2021-01-13 05:14

    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.

    0 讨论(0)
提交回复
热议问题