【问题标题】:How to append to system path programmatically?如何以编程方式附加到系统路径?
【发布时间】:2016-10-27 18:32:05
【问题描述】:

在 python 中,如何以编程方式附加到我的系统路径?我知道sys.path.append 并且刚刚搜索了文档,但我有点困惑。它告诉我 sys.path.append 仅附加到 PYTHONPATH 而不是实际的系统路径。有没有办法可以暂时以编程方式附加到系统路径?

【问题讨论】:

    标签: python python-2.7 path


    【解决方案1】:

    只需更新环境PATH变量:

    old_path = os.environ['PATH']
    try:
        os.environ['PATH'] = "{}{}{}".format('/my/new/path', os.pathsep, old_path)
    finally:
        os.environ['PATH'] = old_path
    

    另外,程序在调用其他工具时保持一个单独的环境是很常见的。

    env = os.environ.copy()
    env['PATH'] = "{}{}{}".format('/my/new/path', os.pathsep, env['PATH'])
    # change other env here...
    subprocess.check_call(['my', 'tool'], env=env)
    

    【讨论】:

    • 效果很好,所以我是否更正sys.append.path 只对PYTHONPATH 本身起作用?
    • @Pyth0nicPenguin 首先是sys.path(.append),是的只有PYTHONPATH
    • @Pyth0nicPenguin - 不完全是。 sys.path.append 仅附加到正在运行的程序的模块查找路径。如果它执行其他程序,他们将只能看到原始环境中的PYTHONPATH。 - 我的意思是作为子进程执行,而不是导入。如果执行其他 python 脚本并希望它们看到不同的路径,则需要与PYTHONPATH 玩相同的os.environ 游戏。
    猜你喜欢
    • 2012-05-23
    • 2016-07-22
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    相关资源
    最近更新 更多