集成 python-与 PRAW 解耦?

Integrating python-decouple with PRAW?

我一直在尝试看看是否可以使用 python-decouple 将我的机器人凭证放在一个单独的 .env 文件中。

Auth 方法基本上是正确的 praw 文档:

    reddit = praw.Reddit(
        client_id=config('CLIENT_ID'),
        client_secret=config('CLIENT_SECRET'),
        password=config('PASSWORD'),
        user_agent=config('USER_AGENT'),        
        username=config('USERNAME')
    )

但是,每当我尝试时,似乎 return 出现 403 身份验证错误。我回过头来,用实际细节的字符串替换解耦配置,但它似乎并没有跟进,并且发生的错误似乎是随机的,具体取决于我取出的东西和时间。

这是解耦函数的问题吗?

谢谢。

I've been trying to see if I can use python-decouple to place my bot credentials on a separate .env file.

为什么不使用 praw.ini 文件? PRAW 文档中记录了这一点 here。它是一种用于将 Reddit 凭据存储在与您的代码不同的文件中的格式。例如,praw.ini 文件可能如下所示:

[bot1]
client_id=Y4PJOclpDQy3xZ
client_secret=UkGLTe6oqsMk5nHCJTHLrwgvHpr
password=pni9ubeht4wd50gk
username=fakebot1

[bot2]
client_id=6abrJJdcIqbclb
client_secret=Kcn6Bj8CClyu4FjVO77MYlTynfj
password=mi1ky2qzpiq8s59j
username=fakebot2

然后您可以像这样在代码中使用特定的凭据:

import praw

reddit = praw.Reddit('bot2', user_agent='myBot v0.1')
print('Logged in as', reddit.user.me())

我认为这是使用 PRAW 凭据的最佳解决方案。


但是,如果您真的想用 python-decouple 来做,这里有一个工作示例:

文件内容 .env:

username=k8IA
password=REDACTED
client_id=REDACTED
client_secret=REDACTED

文件内容 connect.py:

import praw

from decouple import config

reddit = praw.Reddit(username=config('username'),
        password=config('password'),
        client_id=config('client_id'),
        client_secret=config('client_secret'),
        user_agent='myBot v0.1')

print('Logged in as', reddit.user.me())

当运行python3 connect.py时输出:

Logged in as k8IA