如何在mac终端中设置环境变量,并让python脚本有效地提取变量?

如何在mac终端中设置环境变量,并让python脚本有效地提取变量?,python,macos,terminal,environment-variables,Python,Macos,Terminal,Environment Variables,我正在使用MacOS,正在从事一个python项目。 在我的项目中有一行: num_workers = int(os.environ.get('NUM_SAS_WORKERS', 1)) 我想在我的环境变量中添加NUM\u SAS\u WORKERS,并将其设置为10,以便我的python项目可以将值10加载到NUM\u WORKERS 我已尝试在终端中执行此操作: export NUM_SAS_WORKERS=10 NUM_SAS_WORKERS=10 python 通过在终端中运行pr

我正在使用MacOS,正在从事一个python项目。 在我的项目中有一行:

num_workers = int(os.environ.get('NUM_SAS_WORKERS', 1))
我想在我的环境变量中添加
NUM\u SAS\u WORKERS
,并将其设置为10,以便我的python项目可以将值10加载到
NUM\u WORKERS

我已尝试在终端中执行此操作:

export NUM_SAS_WORKERS=10
NUM_SAS_WORKERS=10 python
通过在终端中运行
printenv
,我能够验证
NUM\u SAS\u WORKERS=10
是否存在

cd ~  
但它不起作用。在我的python脚本中,
num_workers
仍然加载了1


如何正确地做

如果要访问Python shell中的
NUM\u SAS\u WORKERS
环境变量,请从终端运行以下命令:

export NUM_SAS_WORKERS=10
NUM_SAS_WORKERS=10 python
一旦进入Python shell:

>>> import os
>>> int(os.environ.get('NUM_SAS_WORKERS', 1))
10
如果要在文件中访问它,非常类似:

NUM_SAS_WORKERS=10 python yourfile.py

如果从terminal命令设置环境变量,则在关闭该终端后,该变量将被删除。要设置并保留它们,您必须在
.bash\u profile
文件中更新它们,该文件作为隐藏文件驻留在主目录中。按照以下命令进行更新

开放式终端

cd ~  
(将您带到mac的主目录)

(要打开
.bash\u profile
文件,可以使用任何文本编辑器名称代替“Visual Studio代码”)

现在,将打开
.bash\u profile
,您可以在那里设置环境变量并保存它

例如:

NUM_SAS_WORKERS=10
现在在终端中运行
echo$[NUM\u SAS\u WORKERS]
来读取它

执行上述步骤后,有时python项目/文件中仍无法读取环境变量。在这种情况下,您必须重新启动或注销并登录到可以修复问题的计算机

要检查环境变量是否可用于python代码,请在python控制台中运行以下脚本。这将打印所有环境变量

import os 
print(os.eviron) 

该命令(EXPORT的大写)不会创建值为10的环境变量。正确的格式是
export NUM\u SAS\u WORKERS=1
(小写
export
,在
=
周围没有空格)。您是如何运行代码的?您是在命令提示符下键入
python myscript.py
,还是在运行GUI或其他东西?您在一个shell会话中设置的环境变量仅适用于该shell会话及其启动的进程。因此,如果您没有,您需要从同一会话启动Python脚本。@chepner谢谢。这是我问题中的一个错误。我刚刚重新编辑了它。我使用了“export”而不是“export”,如果包含空格,它仍然不会将
NUM\u SAS\u WORKERS
初始化为10。事实上,这个变量甚至不会被定义
export
只要标记一个要添加到环境中的名称(如果存在同名变量)。