2017-03-23 2 views
0

이미 SLACK_TOKEN 환경 변수를 설정했습니다. 그러나 "SLACK_TOKEN=os.environ.get('SLACK_TOKEN')"은 "없음"을 반환합니다. 유형은입니다. 나는 os.environ.get 환경 변수의 값을 가져 오지 생각합니다. 나머지 코드는 실행되지 않습니다.os.environ.get()은 환경 값을 Windows에서 반환하지 않습니까?

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 
+0

환경을 올바르게 설정 했습니까? 쉘에서 $ SLACK_TOKEN "'을 echo 할 경우 어떻게됩니까? –

+0

'.get (..)'은 키를 찾을 수 없다면 보통'None'을 반환합니다. 즉,'environ'에'SLACK_TOKEN'이 없다는 것을 의미합니다. –

+1

Windows에서 설정 한 경우 셸을 다시 시작하거나 새 쉘을 열어야합니다. 기존 쉘은 새로 설정된 환경 변수를 가져 오지 않습니다. – Sagar

답변

2

비슷한 문제에 직면했습니다. 값에서 따옴표를 제거하여 문제를 해결했습니다. 예 : *source local.env*

것은 **** local.env을 참여 : 명령을 실행하여 파이썬 터미널 또는 콘솔에서

*local.env:* 
export SLACK_TOKEN=xxxxxyyyyyyyzzzzzzz 

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

: 은 내가 내 비밀 키 값을 저장 것을 특징으로 local.env 파일을 생성 gitignore.Make에서 정보를 보호해야하므로 gitignore에 넣지 마십시오.

로컬 서버에만 적용됩니다. 도움이 되셨 으리라 생각합니다. 해피 코딩 :

+0

환경 변수를 올바르게 설정하지 않았으므로 고맙다고 생각했습니다. –

관련 문제