在我的PC上运行正常的Python代码在树莓派上无法运行

4 投票
1 回答
1824 浏览
提问于 2025-04-18 15:45

我最近买了一个树莓派,打算用来做很多项目,其中一个是做reddit机器人。我在桌面电脑(Windows 8.1)上用PRAW写的这个机器人运行得很好,但在我的树莓派(Raspbian系统)上却不行。我把问题缩小到几行代码。
简单来说,我想做的是获取帖子中的自我描述文本,然后把它按空格分成单词,接着检查这些单词中是否有特定的词。

text = submission.selftext.replace(","," ").encode("utf-8").lower().split()
for i in range (0, len(players)):
    player = players[i].lower()
    if player in text:
        print(player)

在我的电脑上,这段代码运行得很好,但在树莓派上,if语句从来没有被触发,尽管我在每次测试中使用的是完全相同的帖子。

如果你对PRAW不太熟悉,我是在分割一个字符串,并在里面查找单词,其中text是要查找的单词数组,而players是一个字典。

编辑:这段代码没有产生任何错误,只是没有像在桌面上那样触发if语句。

编辑 #2:似乎用硬编码的变量textplayer时,代码运行得很好。我把text硬编码成包含应该在players中的一个条目,但它找不到,这让我觉得问题出在我创建players列表的方式。下面是我用来创建它的方法。

def getPlayers():
    players = []
    with open("PlayerIDs.txt") as f:
        for line in f:
            players.append(line)
    return players

解决方案:在Python 2和3之间,unicode和编码的工作方式发生了变化,因此这段代码在我的树莓派上无法在Python 2.x上运行。最后我安装了Python 3,并使用virtualenv设置了Python 3,现在一切都正常了 :)

1 个回答

2

一个可能的问题是,你在使用不同版本的Python。试着在树莓派和电脑上运行以下代码:

print (sys.version)

我敢打赌,一个会显示“2.某个数字”,另一个会显示“3.某个数字”。如果真是这样,那就说明你在使用不兼容的Python版本。树莓派自带的是Python 2(它默认的开发环境是IDLE),而IDLE 3是用于Python 3的开发环境,也预装在树莓派的操作系统里。你只需要在和电脑上相同版本的开发环境中运行脚本就可以了。

另外,我知道这听起来很简单,但树莓派的网络连接常常不太稳定。你确定它能正常连接到互联网吗?

希望这些能帮到你!

撰写回答