在我的PC上运行正常的Python代码在树莓派上无法运行
我最近买了一个树莓派,打算用来做很多项目,其中一个是做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:似乎用硬编码的变量text
和player
时,代码运行得很好。我把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 个回答
一个可能的问题是,你在使用不同版本的Python。试着在树莓派和电脑上运行以下代码:
print (sys.version)
我敢打赌,一个会显示“2.某个数字”,另一个会显示“3.某个数字”。如果真是这样,那就说明你在使用不兼容的Python版本。树莓派自带的是Python 2(它默认的开发环境是IDLE),而IDLE 3是用于Python 3的开发环境,也预装在树莓派的操作系统里。你只需要在和电脑上相同版本的开发环境中运行脚本就可以了。
另外,我知道这听起来很简单,但树莓派的网络连接常常不太稳定。你确定它能正常连接到互联网吗?
希望这些能帮到你!