【问题标题】:how to set up environment variables in mac terminal and have python scripts pick the variable up effectively?如何在 mac 终端中设置环境变量并让 python 脚本有效地选择变量?
【发布时间】:2019-09-14 05:24:57
【问题描述】:

我正在使用 MacOS 并正在开发一个 python 项目。 在我的项目中有一行:

num_workers = int(os.environ.get('NUM_SAS_WORKERS', 1))

我想在我的环境变量中添加NUM_SAS_WORKERS并将其设置为10,以便我的python项目可以将值10加载到num_workers

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

export NUM_SAS_WORKERS=10

我能够通过在终端中运行 printenv 来验证 NUM_SAS_WORKERS = 10 是否存在

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

如何正确操作?

【问题讨论】:

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

标签: python macos terminal environment-variables


【解决方案1】:

如果您想在 Python shell 中访问 NUM_SAS_WORKERS 环境变量,请从您的终端运行以下命令:

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

【讨论】:

    【解决方案2】:

    如果您通过终端命令设置环境变量,则在您关闭该终端后它会立即被删除。要设置和保留它们,您必须在 .bash_profile 文件中更新它们,该文件作为隐藏文件驻留在主目录中。按照以下命令进行更新。

    打开终端

    cd ~  
    

    (带你到mac的主目录)

    open -a "Visual Studio Code" .bash_profile 
    

    (要打开.bash_profile 文件,可以使用任何文本编辑器名称代替“Visual Studio Code”)

    现在,.bash_profile 将打开,您可以在其中设置环境变量并保存。

    例子:

    NUM_SAS_WORKERS=10
    

    现在在终端运行echo $[NUM_SAS_WORKERS] 来阅读它

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

    要检查环境变量是否可用于您的 Python 代码,请在您的 Python 控制台中运行以下脚本。这应该会打印出所有的环境变量。

    import os 
    print(os.eviron) 
    

    【讨论】:

      猜你喜欢
      • 2020-09-06
      • 2012-01-12
      • 1970-01-01
      • 2013-11-15
      • 2012-01-19
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多