正如标题所说。
当我执行转换的python文件(.exe)时,我得到以下输出:
Traceback (most recent call last):
File "background.py", line 10, in <module>
File "site-packages\praw\reddit.py", line 129, in __init__
File "site-packages\praw\config.py", line 72, in __init__
File "site-packages\praw\config.py", line 98, in _initialize_attributes
File "site-packages\praw\config.py", line 31, in _config_boolean
AttributeError: '_NotSet' object has no attribute 'lower'
[1692] Failed to execute script background
我没有使用praw.ini文件,而是硬编码登录的值:
import praw
import praw.models
import urllib.request
from random import randint
from os import getcwd
import ctypes
r = praw.Reddit(client_id='client',
client_secret='secret',
user_agent='user')
sub = r.subreddit('earthporn')
choose = []
for i in sub.hot(limit=20):
a = str(i.url)
if "i.redd" in a or "i.imgur" in a:
choose.append(i.url)
x = choose[randint(0,len(choose)-1)]
resource = urllib.request.urlopen(x)
output = open("daily_image.jpg","wb")
output.write(resource.read())
output.close()
direc = getcwd() + "\\daily_image.jpg"
ctypes.windll.user32.SystemParametersInfoW(20, 0, direc , 0)
上面的文件只能在python中运行,但在转换为exe时则不行。 (显然有客户端,秘密和用户ID设置,随意窃取idrc)
非常感谢任何帮助!
答案 0 :(得分:2)
我遇到了此错误,发现要解决此错误,您需要在运行可执行文件(praw.ini
)的目录中拥有your_app.exe
的副本。您可以在已安装的praw.ini
目录中找到\praw
。
答案 1 :(得分:1)
右。
因此,pyinstaller不是一个完美的.py到.exe转换器,所以有些东西会在翻译中丢失。
我首先在praw中注释掉了所有更新,因为这导致了pyinstaller创建的.exe崩溃(注意我在这里做的所有操作都会导致.exe中的错误,但从不在.py中)。
然后我必须手动设置一些变量,因为它们在.exe版本中调用时没有设置。在PRAW中使用线程,在.exe版本中使用线程无法跟上,或者有一些非常奇怪的蠢事。
是的,所以我基本上只是在整个过程中修改了代码,所以这个东西会运行。如果有人像我一样遇到这个问题并且无法在任何地方找到答案(因为相信我,我在地球上搜寻了它并且无处可寻),请给我发消息,我可以发给你我的praw版本。
愿上帝禁止你得到这个错误
答案 2 :(得分:1)
不要害怕!代替正确打包的 praw.ini
,它包含的配置也可以作为参数显式提供给 Reddit
构造函数:
reddit = praw.Reddit(
client_id="CHANGEME",
client_secret="CHANGEME",
user_agent="CHANGEME",
check_for_updates=False,
comment_kind="t1",
message_kind="t4",
redditor_kind="t2",
submission_kind="t3",
subreddit_kind="t5",
trophy_kind="t6",
oauth_url="https://oauth.reddit.com",
reddit_url="https://www.reddit.com",
short_url="https://redd.it",
ratelimit_seconds=5,
timeout=16,
)
即使在与 PyInstaller 打包之后,上述代码对我来说也很管用。请注意,未来的 PRAW 更新可能会为 praw.ini
添加更多默认值,因此您必须将它们复制过来,否则您将收到有关未设置配置选项的类似错误。
请参阅此 GitHub 问题:https://github.com/praw-dev/praw/issues/1016。