2016-06-07 36 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代碼以查看它失敗的位置。

相關問題