os.environ.get() 不返回 Windows 中的环境值?

新手上路,请多包涵

我已经设置了 SLACK_TOKEN 环境变量。但是 "SLACK_TOKEN=os.environ.get('SLACK_TOKEN')" 返回“无”。 SLACK_TOKEN 的类型是 NoneType 我认为 os.environ.get 没有获取环境变量的值。所以其余代码没有执行。

 import os
from slackclient import SlackClient

SLACK_TOKEN= os.environ.get('SLACK_TOKEN') #returning None
print(SLACK_TOKEN) # None
print(type(SLACK_TOKEN)) # NoneType class

slack_client = SlackClient(SLACK_TOKEN)
print(slack_client.api_call("api.test")) #{'ok': True}
print(slack_client.api_call("auth.test")) #{'ok': False, 'error': 'not_authed'}

def list_channels():
    channels_call = slack_client.api_call("channels.list")
    if channels_call['ok']:
        return channels_call['channels']
    return None

def channel_info(channel_id):
    channel_info = slack_client.api_call("channels.info", channel=channel_id)
    if channel_info:
        return channel_info['channel']
    return None

if __name__ == '__main__':
    channels = list_channels()
    if channels:
        print("Channels: ")
        for c in channels:
            print(c['name'] + " (" + c['id'] + ")")
            detailed_info = channel_info(c['id'])
            if detailed_info:
                print(detailed_info['latest']['text'])
    else:
        print("Unable to authenticate.") #Unable to authenticate

原文由 Ravi Bhushan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 899
1 个回答

我遇到了类似的问题。我通过从值中删除引号来修复它。示例:我创建了一个 local.env 文件,其中存储了我的密钥值:

 *local.env:*
export SLACK_TOKEN=xxxxxyyyyyyyzzzzzzz

*settings.py:*
SLACK_TOKEN = os.environ.get('SLACK_TOKEN')

在您的 Python 终端或控制台中,运行命令: *source local.env*

****在 gitignore 中涉及 local.env。确保你不要将它推送到 git,因为你必须保护你的信息。

这仅适用于本地服务器。希望对您有所帮助。编码愉快 :)

原文由 CodeHelp 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题