2016-06-07 59 views
-1

我试图在我的Raspberry Pi(Ubuntu MATE)上执行一个脚本,我的VM(Oracle VM Virtual Box/Ubuntu 15.10)。在Raspberry Pi上,我试过Raspbian,目前我正在运行Ubuntu MATE(16.04),因为我想看看它是否在那里工作。在VirtualBox(py 2.7.10)中工作的Python脚本,但不在Raspberry Pi 3上(py 2.7.11)

基本上我的脚本经历了几个列表,并将每个列表中的第一个项目,然后运行它的变化,并采取最后一个列表中的第二项等搜索信息(航班)在线。基本上这是一个“尝试每个项目的组合”结果保存在不同的文件中。

我没有得到一个错误,这是奇怪的事情。我已经安装了我的脚本所需的所有软件包。

它只是通过一个循环,并得到“卡住”。所以,终端的行为像它仍然在工作,但我没有得到任何更多的输出。我最终得到一个文件,而不是12 ...

我也有与按Ctrl +ž关闭控制台。

有没有人有一个想法可能会导致这个问题?

代码:https://github.com/tuxeos/flightsearch/blob/master/flightfail.py

输出:https://raw.githubusercontent.com/tuxeos/flightsearch/master/output.md

我删除从源代码的网站,因为我不想陷入任何麻烦。但其他代码(出发/到达日期和机场代码除外)是相同的。

VirtualBox中的执行输出是相同的,它只是在“启动定时器”后继续并进入下一个循环。

版本在Ubuntu(VM):

  • QT:4.8.6
  • SIP:4.16.9
  • PyQt的:4.11.4

在Ubuntu MATE版本(覆盆子Pi 3):

  • qt:4.8.7
  • SIP:4.17
  • PyQt的:4.11.4

回答

0

编辑:从这个答案PyQt: app.exec_() stops all following code from running app.exec_()开始阻塞PyQt4实例这就是为什么不执行进一步的代码。您可以通过该线程中概述的多种方式与它进行交互。

那么问题是为什么你的第一次循环迭代运行时,它不会阻止它调用app.exec_()


从输出它被陷在你的Render类这两行之一:

self.mainFrame().load(QUrl(url)) 
self.app.exec_() 

https://github.com/tuxeos/flightsearch/blob/master/flightfail.py#L30

为了澄清,这个确切的脚本运行确定你的VM?

我不熟悉PyQT4QWebPage类,你继承,它看起来像树莓派正在跟调用mainframe().loadapp.exec_第二次的问题。

我敢打赌

self.app = QApplication.instance() 

是在循环的第二次迭代返回相同的实例,并调用mainframe().loadapp.exec_上的实例是已有的这些所谓的一个是一个问题。 也许尝试重新使用相同的实例?

Python调试器pdb是你的朋友在这里(或像PyCharm的IDE)。它可以帮助您确定代码的哪一行失败,还可以让您调试PyQt4代码以查看它失败的位置。

相关问题