Mac Yosemite os 变量在 bash Python 解释器中有效,运行 终端中的脚本,但在 Sublime Text 2 文本编辑器中无效

Mac Yosemite os variable works in bash Python interpreter, running the script in terminal, but not in Sublime Text 2 text editor

这对我来说很奇怪。我在 bash 中设置了一个变量并将其导出,如下所示:

export EMAIL="example@example.com"

我已使用命令 "source ~/.bash_profile" 重置 bash,甚至注销并重新登录,问题如下:

当我在 Python 3 解释器中执行此操作时,一切都很好:

>>> import os 
>>> print(os.environ["EMAIL"])
example@example.com

当我将以上内容放入脚本并在终端中 运行 时,一切都很好。

Jeffreys-MacBook-Pro:jeff$ python3 check_var.py 
example@example.com

然而,当我在我的文本编辑器 Sublime Text 2 中 运行 脚本时,我得到了这个:

    raise KeyError(key) from None
KeyError: 'EMAIL'

我的所有脚本 运行 在文本编辑器中都很好,但是,当我尝试从环境中获取此变量时 运行 在文本编辑器中编辑脚本时,它会阻塞。关于如何解决此问题的任何想法?

原来这是一个 Mac 特定问题。或者,至少现在对我有用的是 Mac 特定答案。这是我为使这一切正常工作所做的工作:

首先在终端中 运行 这个(用你自己的替换 "variablename" 和 "value":

launchctl setenv variablename value

这会设置一个变量,以便所有应用程序(除了通过终端启动的图形应用程序之外,通过 Dock 或 Spotlight 启动的图形应用程序)都可以使用它。

当您注销或重新启动时,以上内容消失。如果您希望每次登录时都可以使用变量,请执行以下操作:

1) 启动 AppleScript 编辑器并输入如下命令:

do shell script "launchctl setenv variablename value"

(Use multiple lines if you want to set multiple variables)

2) 以任意名称保存,但必须保存为文件格式类型:Application.

3) 打开系统设置 → 用户和组 → 登录项并添加您的新应用程序。这样脚本将在您登录时被调用。

现在,这样做不会使您的变量在 bash 中可用。如果您希望 shell/terminal.

可用的变量,您仍然需要将它们添加到 .bash_profile 文件中

注意:我从对另一个类似问题的回答中提取了 much/most 内容,如果您想查看,请转到此处:

Setting environment variables via launchd.conf no longer works in OS X Yosemite/El Capitan/macOS Sierra?