Python 由于未知错误,我无法通过Twilio教程代码发送短信
因此,我使用Twilio提供的示例代码向我的手机发送短信。当使用示例代码时,我不断得到相同的错误,我不确定错误是什么。我已经尝试过在这个网站上搜索,看看是否有人有任何类似的错误,我也遵循了Twilio一步一步的过程来设置和接收短信。所以我很困惑为什么会这样。我使用的所有资源都没有给我一个关于为什么会发生这种情况的答案。出于安全考虑,我的电话号码用星号标出了Python 由于未知错误,我无法通过Twilio教程代码发送短信,python,twilio,Python,Twilio,因此,我使用Twilio提供的示例代码向我的手机发送短信。当使用示例代码时,我不断得到相同的错误,我不确定错误是什么。我已经尝试过在这个网站上搜索,看看是否有人有任何类似的错误,我也遵循了Twilio一步一步的过程来设置和接收短信。所以我很困惑为什么会这样。我使用的所有资源都没有给我一个关于为什么会发生这种情况的答案。出于安全考虑,我的电话号码用星号标出了 # Download the helper library from https://www.twilio.com/docs/python/
# Download the helper library from https://www.twilio.com/docs/python/install
import os
from twilio.rest import Client
# Your Account Sid and Auth Token from twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ['ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb']
auth_token = os.environ['REDACTED']
client = Client(account_sid, auth_token)
message = client.messages \
.create(
body="What is up Med",
from_='+***********',
to='+***********'
)
print(message.sid)
错误如下:
Traceback (most recent call last):
File "/Users/administrator/Documents/Unit 5 Proj.py", line 8, in <module>
account_sid = os.environ['ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb']
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 679, in __getitem__
raise KeyError(key) from None
KeyError: 'ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb'
回溯(最近一次呼叫最后一次):
文件“/Users/administrator/Documents/Unit 5 Proj.py”,第8行,在
帐户_sid=os.environ['ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb']
文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py”,第679行,在__
从“无”提升钥匙错误(钥匙)
键错误:“ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb”
读取您的错误
您对
os.eviron[您的钥匙]
的调用出现了错误,从None KeyError中调用raise KeyError(钥匙)。谷歌搜索时,当您试图在os.eviron
中访问字典中缺少的密钥时,会发生此错误。您是否在env
变量中设置了键?如果您在代码中索引的密钥是您的帐户sid和身份验证令牌,那么您肯定是做错了您在这里混淆了两个概念:
在代码中硬编码Sid和身份验证令牌值
从执行环境中提取Sid和身份验证令牌值
你只想做其中一个,而不是两个。最直接的方法是只执行#1,如下所示:
account_sid = 'ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb'
auth_token = 'REDACTED'
如果要执行#2,则需要在运行程序的环境中定义两个导出变量。看起来你在Mac上,所以你可以在你的~/.bash\u配置文件中执行类似操作:
export TWILIO_SID=ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb
export TWILIO_AUTH_TOKEN=REDACTED
然后在Python代码中执行此操作:
account_sid = os.environ['TWILIO_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
更新:我要补充的是#2在生产代码中更受欢迎,因为它避免了您必须将敏感帐户凭据签入到其他人将看到的共享源代码存储库中。这就是增加复杂性的全部原因。如果你只是在鬼混或做一个私人项目,那么#1就可以了。如果您正在进行的工作中,您的代码将被其他人看到,请执行2以将您的凭据保存在自己的帐户中。由于您硬编码了实际ID,因此在输入帐户sid和身份验证令牌时不需要使用os.environ。如果使用变量名而不是实际数字,则只需将其添加为env变量。是的,正如@SamanthaCruz所暗示的,这里可能需要的是account_sid
='ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb',以及类似的身份验证令牌。