Python os.environ.get()在windows中不返回环境值?

Python os.environ.get()在windows中不返回环境值?,python,environment-variables,slack,Python,Environment Variables,Slack,我已经设置了SLACK\u令牌环境变量。但是“SLACK\u TOKEN=os.environ.get('SLACK\u TOKEN')”返回“None”。 SLACK\u令牌的类型为NoneType。我认为os.environ.get无法获取环境变量的值。所以代码的其余部分没有执行 import os from slackclient import SlackClient SLACK_TOKEN= os.environ.get('SLACK_TOKEN') #returning None

我已经设置了SLACK\u令牌环境变量。但是
“SLACK\u TOKEN=os.environ.get('SLACK\u TOKEN')”
返回“None”。 SLACK\u令牌的类型为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

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

*local.env:*
export SLACK_TOKEN=xxxxxyyyyyyyzzzzzzz

*settings.py:*
SLACK_TOKEN = os.environ.get('SLACK_TOKEN')
在python终端或控制台中,运行命令:
*source local.env*

****让local.env参与gitignore。确保不要将其推送到git,因为您必须保护您的信息


这只适用于本地服务器。希望这有帮助。快乐编码:)

在我的情况下,我在env文件中写入了错误的内容:

SLACK_TOKEN=xxxxxyyyyyyyzzzzzzz
我忘记了导出之前,正确的导出应该是:

export SLACK_TOKEN=xxxxxyyyyyyyzzzzzzz

您确定已正确设置环境吗。如果
在shell中回显“$SLACK\u TOKEN”
会发生什么?如果找不到密钥,则a
.get(…)
通常返回
None
。因此,这意味着在
环境中没有
SLACK\u令牌
。如果在Windows中设置它,则必须重新启动shell或打开一个新的shell才能显示它。现有的shell将不会获得新设置的环境变量。真的吗?!多么“跛脚”@威廉·瓦农森:不是真的“瘸子”;它保证您打开的环境已经具有一致的状态。Linux shell的工作方式也一样。谢谢,我遇到了这个问题,因为我没有正确设置环境变量