【发布时间】:2017-03-23 14:19:11
【问题描述】:
我已经设置了 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
【问题讨论】:
-
你确定你已经正确设置了环境。如果你在 shell 中
echo "$SLACK_TOKEN"会发生什么? -
如果找不到密钥,
.get(..)通常会返回None。所以这意味着environ中没有SLACK_TOKEN。 -
如果你在 Windows 中设置它,你必须重新启动 shell,或者打开一个新的,让它显示出来。现有的 shell 不会获得新设置的环境变量。
-
真的吗?!多么“蹩脚”?!
-
@WillemVanOnsem:不是真的“蹩脚”;它保证您打开的环境已经具有一致的状态。 Linux shell 的工作方式相同。
标签: python environment-variables slack