【问题标题】:how do I modify the system path variable in python script?如何在 python 脚本中修改系统路径变量?
【发布时间】:2011-05-04 03:19:51
【问题描述】:

我正在尝试从 cron 运行 python 脚本,但它运行不正常,所以我假设它的路径环境变量不同。无论如何要更改python脚本中的变量吗?

【问题讨论】:

  • 您应该提供您的操作系统详细信息。此外,这看起来很可能是重复的 - 我建议更努力地搜索。
  • “运行不正常”是什么意思?你确定你甚至正在启动你的脚本(即它可以找到你的 python 二进制文件)
  • 我正在用没有路径的程序做很多 Popen。
  • cronlog 说它正在运行,但脚本没有做它应该做的事情。
  • 这个问题的标题应该改变。我来到这里是因为我实际上想更改 python 脚本中的路径变量,而不是因为我需要有关从 cron 作业运行 python 脚本的信息。

标签: python path environment-variables


【解决方案1】:

您不需要在 python 脚本中设置 PATH。 相反,放一些类似

USER=joe
HOME=/home/joe
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/some/other/path
PYTHONPATH=/home/joe/pybin
MAILTO=joe
LANG=en_US.UTF-8

#min hr    day   mon dow
*/5  12    *     *   *     reminder.py 'Eat lunch'

在您的 crontab 顶部。然后,这些环境变量将可用于通过您的 crontab 运行的所有 cron 作业。

【讨论】:

    【解决方案2】:

    @unutbu has the right approach,但对于它的价值,@Joe Schmoe,如果您需要信息:

    import sys
    print sys.path
    ['.', '/usr/local/bin', '/usr/local/lib/python2.6/dist-packages',...]
    sys.path.append('/home/JoeBlow/python_scripts')
    print sys.path
    ['.', '/usr/local/bin', '/usr/local/lib/python2.6/dist-packages', '/home/JoeBlow/python_scripts',...]
       

    sys.path 是一个数组,其中包含启动脚本的 PYTHONPATH 变量(或您的 shell 的默认 PYTHONPATH 是什么)中的所有内容。

    【讨论】:

      【解决方案3】:

      虽然接受的答案适用于 OP 的目的,而第二个答案对于更新 python sys.path 变量是正确的,但我认为,如果 OP 无法使用接受的答案(因为,比如说,那里是一项反对在构建/测试机器上修改 OS PATH 变量的策略),他们正在寻找类似this SO answer 的东西。这里总结一下简单的案例,改变OS PATH环境变量:

      app_path = os.path.join(root_path, 'other', 'dir', 'to', 'app')
      os.environ["PATH"] += os.pathsep + app_path
      

      至少,这是我在阅读问题时希望找到的。

      【讨论】:

      • +1 对于您要设置 PATH 的情况(和 PYTHONPATH 是类似的代码),但请注意 sys.path 和 os.environ['PATH'] 是 / 可以不同。
      • 这也是我在阅读 OP 问题时所理解的。我试图使用 'export PATH=$PATH:' + THE_OTHER_PATH 设置 PATH,但它不起作用。
      猜你喜欢
      • 2017-03-25
      • 1970-01-01
      • 2020-12-26
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      相关资源
      最近更新 更多