【问题标题】:Set environment path in linux using python script使用python脚本在linux中设置环境路径
【发布时间】:2018-06-24 12:58:15
【问题描述】:

我在 python 脚本中设置 linux os 环境变量。好像没有正确设置。

使用的代码:

import os
from subprocess import call
squid_server_ip = 1.1.1.1 
os.chdir("somepath")
call(["pwd"])
os.environ["LD_LIBRARY_PATH="] = ".:$LD_LIBRARY_PATH"
print os.environ['LD_LIBRARY_PATH'] 
call(["./DUModifier","-httpproxy", "{}:3128".format(squid_server_ip)])

输出:

 somepath
 /export-path
 ./DUModifier: error while loading shared libraries: xBase39.so: cannot open shared object file: No such file or directory

手动执行:

 cd somepath
 export LD_LIBRARY_PATH=.:$LD_LIBRARY
 echo $LD_LIBRARY_PATH
 .:.:/export-path
 ./DUModifier -httpproxy 1.1.1.1:3128

  DUModifier Release2.1 2018-01-16T04:07:57-05:00
  Configuration file to modify: xgDeployConfig.xml
  New configurations are:
  Option: httpproxy, value: 1.1.1.1:3128
  Successfully modified config file: xgDeployConfig.xml

谁能帮我解决一下

【问题讨论】:

  • 感谢您指出我使用了 like os.environ["LD_LIBRARY_PATH"] = ".:$LD_LIBRARY_PATH"..然后它工作正常
  • 除非我误解(这很有可能),否则不,它确实工作正常:这有多个问题 - 请参阅下面的答案。

标签: python linux python-2.7 unix


【解决方案1】:

您必须将环境传递到call()。像这样的:

myenv = {'LD_LIBRARY_PATH': ".:./export-path"}

(正如评论指出的那样,您不能在值中使用 $LD_LIBRARY_PATH:这是 bash 语法;在 python 中,您必须使用 os.environ['LD_LIBRARY_PATH'] 来获取当前值,然后在设置 myenv 时使用它)。然后在调用中使用:

call(["./DUModifier","-httpproxy", "{}:3128".format(squid_server_ip)], env=myenv)

【讨论】:

    【解决方案2】:

    你真的必须使用系统环境变量吗? 我喜欢使用https://pypi.python.org/pypi/python-dotenv,这样您就可以拥有本地 .env 文件,其中包含已定义的变量,并且易于在您的脚本中使用:> 还是你有义务使用严格的系统环境?

    【讨论】:

      【解决方案3】:

      此行不正确:

      os.environ["LD_LIBRARY_PATH="] = ".:$LD_LIBRARY_PATH"

      你应该写:

      if  os.environ.has_key("LD_LIBRARY_PATH"):
          os.environ["LD_LIBRARY_PATH"] = ".:" + os.environ["LD_LIBRARY_PATH"]
      else:
          os.environ["LD_LIBRARY_PATH"] = "."
      

      【讨论】:

      • 这是一个(相对)小问题:主要问题是 OP 想要调用一个程序并将修改后的环境传递给它
      猜你喜欢
      • 1970-01-01
      • 2020-04-05
      • 2011-08-02
      • 2013-10-06
      • 2019-03-18
      • 2012-01-12
      • 2015-03-02
      • 2016-07-13
      • 1970-01-01
      相关资源
      最近更新 更多