【发布时间】:2019-06-20 14:28:10
【问题描述】:
我无法检索环境变量。
我尝试了Tweepy 文档中没有环境变量的示例代码 sn-p,它可以正常工作。我直接在代码中定义了需要的变量。
然后我为consumer_key, consumer_secret, access_token and access_token_secret 定义了 4 个环境变量,但它不再起作用了。让我感到奇怪的是,我可以使用 print(os.environ['TWITTER_CONSUMER_KEY']) 访问环境变量,并且输出是正确的。
键中没有任何拼写错误。我仔细检查了它。
此代码有效:
import tweepy
consumer_key = 'xyz'
consumer_secret = 'xyz'
access_token = 'xyz'
access_token_secret = 'xyz'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
public_tweets = api.home_timeline()
for tweet in public_tweets:
print(tweet.text)
此代码不起作用:
import os
import tweepy
consumer_key = os.environ['TWITTER_CONSUMER_KEY']
consumer_secret = os.environ['TWITTER_CONSUMER_SECRET']
access_token = os.environ['TWITTER_ACCESS_TOKEN']
access_token_secret = os.environ['TWITTER_ACCESS_SECRET']
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
public_tweets = api.home_timeline()
for tweet in public_tweets:
print(tweet.text)
我收到以下错误消息:
Traceback (most recent call last):
File "[...]/testing.py", line 28, in <module>
public_tweets = api.home_timeline()
File "[...]venv\lib\site-packages\tweepy\binder.py", line 250, in _call
return method.execute()
File "[...]\venv\lib\site-packages\tweepy\binder.py", line 234, in execute
raise TweepError(error_msg, resp, api_code=api_error_code) tweepy.error.TweepError: [{'code': 32, 'message': 'Could not authenticate you.'}]
【问题讨论】:
-
您确定每个环境变量都设置或读取正确吗?尝试将它们全部打印在您的代码或调试中,看看是否设置了所有 4 个变量...
-
嗨丁科。我仔细检查了变量。我打印了它们(全部 4 个),它们完全显示在 env 变量之外。我不明白。如果我直接在代码中传递它们,它可以工作,但如果我使用 env 变量则不会。我从头开始另一个项目并在那里测试它。有效。但我想知道,第一个项目有什么问题。
-
帮不上忙。如果按照您所说的正确阅读它们,则应该与上面的代码相同。除非他们以某种方式被修改......
标签: python pycharm environment-variables