我知道在 stackoverflow 上也有类似的问题,但我找不到类似的问题。
每当我运行 python 代码时,我都会尝试自动为 openCV 设置环境变量。
这是在 linux 中临时设置它们的代码:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
在 linux 中,当我回显 PATH 变量时,我得到以下输出:
/usr/local/cuda-9.0/bin:/home/phil/.nvm/versions/node/v10.9.0/bin:/home/phil/bin:/home/phil/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
我在 python 中使用以下代码:
os.environ['PATH'] = "/usr/local/cuda-9.0/bin${PATH:+:${PATH}}"
os.environ['LD_LIBRARY_PATH'] = "/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
但是当我在 python 中回显 PATH 时,我得到了与 PATH 完全相同的字符串。我该怎么做才能让 python 像 linux 一样理解 ${PATH:+:${PATH}}?
最佳答案
bash export
立即计算结果,如下所示:
giannis@local:~ > export TEST_VAR=$PATH
giannis@local:~ > echo $TEST_VAR
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
然而重要的是要记住,在 python 中,os.environ
的 native 行为与此不同。 python 中的 os.environ
实际上就像一本字典。所以当你尝试这个时
os.environ['PATH'] = "/usr/local/cuda-9.0/bin${PATH:+:${PATH}}"
它不会像在 native bash 中那样进行评估。如果你想在 python 中实现相同的行为,你应该这样做
在庆典中:
export SomeVariable="我是用bash构建的,路径是${PATH}"
在python中,你可以像这样建立一个变量
os.environ['some_key'] = "像这样:{something}".format(something=os.environ.get('SomeVariable', "")
所以在你的情况下你可以用这样的东西达到同样的效果
os.environ['PATH'] = "/somthing/:{path}".format(path=os.environ['PATH']
关于python - 如何在python中为linux设置复杂的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52862058/