python - 如何在python中为linux设置复杂的环境变量?

标签 python linux opencv environment-variables

我知道在 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/

相关文章:

c++ - 在 Linux C++ 上检测 keydown 和 keyup 事件

linux - 在httpd.conf中收集网站并获取文件夹大小的脚本

python - gunicorn.errors.HaltServer : <HaltServer 'Worker failed to boot.' 3>

Python - 如何使用 bs4 抓取 javascript 代码)?

java - 从 PHP 脚本调用 Swing Java 应用程序

python - 如何从OpenCV calcOpticalFlowFarneback中提取像素的速度矢量-Python版本)

c++ - OpenCV - 具有 filter2D 和双值的 gaussianKernel

c++ - 如何使函数可以在 OpenCV 中处理不同类型的图像

python - 我将如何将 python 映射函数应用于多维数组

python - 在调用打印函数时增加一个变量