【问题标题】:Is there a way to access environment variables set up in conda environment from Spyder?有没有办法从 Spyder 访问在 conda 环境中设置的环境变量?
【发布时间】:2020-10-29 03:56:36
【问题描述】:

我试图在运行 Spyder 4.1.3 时访问在 conda 环境中设置的环境变量。我可以看到我在 Anaconda Prompt 中激活 conda 环境并运行命令时设置的所有环境变量:

conda env config vars list

我还在 Spyder 中将 Python 解释器设置为正确的虚拟环境,并且可以确认该环境是可访问的(在 Spyder 屏幕的右下角显示为 conda 环境,并且可以加载安装在环境中的包)。

但是,当我尝试在脚本中调用环境变量时,如下所示:

from boxsdk import JWTAuth

auth = JWTAuth(
    client_id= clientID,
    client_secret= clientSecret,
    enterprise_id= enterpriseID,
    jwt_key_id= publicKeyID,
    rsa_private_key_data= privateKey,
    rsa_private_key_passphrase= passphrase
)

我收到此错误(varName 是通用变量名):

NameError: name 'varName' is not defined

我检查以确保脚本中的变量名称也与 conda 环境变量中的名称匹配。 TIA 寻求任何帮助或建议。

【问题讨论】:

  • 您能否分享一下您如何尝试访问脚本中的环境变量的代码?
  • @MatthewBarlowe 代码已添加。

标签: python anaconda environment-variables conda spyder


【解决方案1】:

通常在python中访问环境变量时需要导入os包并使用os.getenv()来访问变量。从我从 anaconda 文档中可以看出,这将是相同的方法。运行脚本时,所有环境变量都存储在字典中,可以使用变量名作为键访问该字典。这与.get() 与常规字典一起使用的方式非常相似,您可以设置一个默认值,在这种情况下,默认值由os 包设置为None。您可以使用print(os.environ) 打印整个环境变量字典来检查您的环境变量是否在运行脚本时正确加载。

import os
from boxsdk import JWTAuth

auth = JWTAuth(
    client_id= os.getenv('clientID'),
    client_secret= os.getenv('clientSecret'),
    enterprise_id= os.getenv('enterpriseID'),
    jwt_key_id= os.getenv('publicKeyID'),
    rsa_private_key_data= os.getenv('privateKey'),
    rsa_private_key_passphrase= os.getenv('passphrase')
)

我假设所有这些变量都是环境变量,如果这不是真的,请从那些不是的变量中删除 os.getenv()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2019-08-30
    • 2022-01-02
    相关资源
    最近更新 更多