【问题标题】:Add in $PATH for linux environment using python script使用 python 脚本为 linux 环境添加 $PATH
【发布时间】:2019-12-06 11:07:37
【问题描述】:

需要在linux ubuntu中添加这个路径--> /home/ubuntu/folderA到我的PATH环境变量中。

更新

print(os.environ["PATH"])

path = "/home/ubuntu/folderA"
os.environ["PATH"] += os.pathsep + path

print(os.environ["PATH"])
#Can see the newly added path here when i print

但是,我仍然无法访问该路径。

当我做printenv 时,我仍然看不到路径。

尝试os.getenv("PATH")查看路径是否已更新,但还是一样

如果我使用以下命令手动执行,则使用printenv,路径就在那里。

export PATH=$PATH:/home/ubuntu/folderA

我需要的是使用我的 python 脚本中的第一个方法更新路径,然后继续我的其余方法。

希望有人可以看看。谢谢。

最终更新:当我运行我的 python 脚本时,结果是附加了路径。只是脚本完成后,路径不会持久。因此,当我执行printenv 时,路径没有显示出来。

【问题讨论】:

  • sys.path 不是PATH 环境变量,环境变量是进程本地的。
  • 我的脚本仍然找不到新添加的路径”是什么意思?请提供minimal reproducible example
  • 您是否使用一个 python 脚本添加路径并使用另一个脚本访问添加的路径?
  • 另外请详细说明您要完成的工作!
  • @ssokhey 我正在尝试仅使用一个脚本来添加路径,并使用相同的脚本来访问添加的路径。

标签: python linux


【解决方案1】:

您可以使用os.environ["PATH"]

查看此question 以获得想法。

【讨论】:

    【解决方案2】:

    sys.path 属于 类型 list。因此,您应该使用内置的append() 方法来添加string

    import sys
    sys.path.append("/home/ubuntu/folderA")
    

    The down-votes led me to look further into the difference between sys.path and os.environ\['PATH'\].

    要更新当前用户的路径变量,请使用 os.environ['PATH']。

    需要注意的是,路径变量是一个字符串对象,在循环内更新它会消耗内存。如果您从列表中更新,请使用以下方法。

    # os.pathsep is the character that separates different paths in the path variable
    os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
    

    【讨论】:

    • 我不是反对者,但 OP 询问的是环境变量 $PATH,而不是 sys.path
    【解决方案3】:

    这是因为在类 Unix 系统上,每个进程的环境都是独一无二的。

    发生的情况是,当您运行脚本时,操作系统会将当前环境变量复制到新的环境中。在那个新环境中,您的脚本会修改 PATH 变量。脚本退出后,该环境将被破坏。

    试着运行一下看看我在说什么:

    path = "/home/ubuntu/folderA"
    os.environ["PATH"] += os.pathsep + path
    print(os.environ["PATH"])
    os.system('printenv')
    

    您应该会看到修改后的 PATH 变量。

    如果您想修改 PATH 变量以进行进一步处理,您必须执行以下操作之一。

    1. 从脚本启动 bash shell。使用 os.system('bash') 这将启动一个子 shell 进程,该进程将从您的脚本继承 PATH 变量。

    2. 首选方法是将脚本更改为类似的内容

       path = "/home/ubuntu/folderA"
       print('export PATH=' + os.environ["PATH"] += os.pathsep + path)
      

      然后像这样执行你的脚本

       eval $(python path.py)
      

      这将在您启动脚本的 shell 中获得修改后的路径。请注意,在 Windows 类型系统上,情况完全不同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-17
      • 2018-06-24
      • 1970-01-01
      • 2020-04-05
      • 2021-06-23
      • 2016-04-08
      • 1970-01-01
      • 2019-05-12
      相关资源
      最近更新 更多