os.environ

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了os.environ相关的知识,希望对你有一定的参考价值。

参考技术A 1、os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"#按照PCI_BUS_ID顺序从0开始排列GPU设备
2、os.environ["CUDA_VISIBLE_DEVICES"]="0"#设置当前使用的GPU设备仅为0号设备 设备名称为‘/gpu:0'
3、os.environ["CUDA_VISIBLE_DEVICES"]="1"#设置当前使用的GPU设备仅为1号设备 设备名称为'/gpu:0'
4、os.environ["CUDA_VISIBLE_DEVICES"]="0,1"#设置当前的GPU设备为0,1号两个设备,名称依次为’/gpu:0','/gpu:1'。表示优先使用0号设备,然后使用1号设备。
5、os.environ["CUDA_VISIBLE_DEVICES"="-1"#设置当前的设备使用CPU
引用: os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = "0"

为什么我的pyspark程序需要os.environ?

我建立了一个简单的程序来使用pyspark测试我的第一个apache-spark环境设置,并得到了在StackOverflow上似乎很常见的错误:Exception: Python in worker has different version 2.7 than that in driver 3.7.

我发现了多个修复程序,而对我来说唯一有效的修复程序是在脚本中添加以下行:os.environ["PYSPARK_PYTHON"]="/Users/username/Library/miniconda3/envs/env_name/bin/python"

我在~/.zshrc$SPARK_HOME/conf/spark-env.sh中都设置了变量:

export PYSPARK_PYTHON=/Users/username/Library/miniconda3/envs/env_name/bin/python
export PYSPARK_DRIVER_PYTHON=/Users/username/Library/miniconda3/envs/env_name/bin/python

所有环境变量都指向简单程序使用的相同python 3.7路径。如果我从命令行运行pyspark,它也会指定3.7。同样,它可以与os.environ一起使用,但是我的问题是,如果我将驱动程序和工作程序配置为3.7,为什么需要这样做?工作者的2.7版本来自哪里(在我在脚本中指定os.environ之前)?

((我正在macOS Catalina上的Sublime Text中构建代码。环境变量指向并且我的代码在python 3.7上运行的conda环境中运行)

答案
如果有任何用户定义的环境变量,则需要

os.environ>包含在代码中。导出变量时,它仅适用于该会话,并且如果稍后执行该代码,则代码将失败。 os.environ处理此类问题,确保将其定向到用户定义的环境变量。

以上是关于os.environ的主要内容,如果未能解决你的问题,请参考以下文章