私は多くの時間、Pythonプロジェクトの実行可能ファイルを作成しようとしました。 、アルドゥイーノとの通信に PyInstallerとPyQtで機能実行可能ファイルを作成できません
- PyQtは(4):私のGUIのために、
- PySerialをこのプロジェクトでは、私が使用する必要があるの.batファイルをいくつかのAVRのものを起動します
実際には実行可能ファイルが作成されますが、起動しようとすると何も起こりませんが、マウスは私に彼女が占領されていることを教えてくれます。
私は、私のプロジェクトに必要なすべての機能を凝縮するいくつかの基本的なプログラムを書いて、どこから問題があるのかを考え出しました。 python(3.5)からこれを起動するとすべて機能的ですが、pyinstallerによって生成されたファイルを実行すると機能しません。
from PyQt4 import QtGui
from interface import Ui_Form
import serial
import subprocess
import sys, os
class win(QtGui.QWidget, Ui_Form):
"""docstring for win"""
def __init__(self):
super(win, self).__init__()
self.setupUi(self)
self.ser = serial.Serial("COM3", 9600)
self.pathBat = "cmd.bat"
def on_pushButton_clicked(self):
#if (self.ser.isOpen() and self.serAvr.isOpen()):
if True:
self.ser.write("start".encode())
p = subprocess.call(self.pathBat, creationflags=subprocess.CREATE_NEW_CONSOLE, **self.subprocess_args())
if p == 1:
self.writeLog("Works")
self.ser.write("stop".encode())
#self.writeLog(p.returncode)
def subprocess_args(include_stdout=True):
# The following is true only on Windows.
if hasattr(subprocess, 'STARTUPINFO'):
# On Windows, subprocess calls will pop up a command window by default
# when run from Pyinstaller with the ``--noconsole`` option. Avoid this
# distraction.
si = subprocess.STARTUPINFO()
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
# Windows doesn't search the path by default. Pass it an environment so
# it will.
env = os.environ
else:
si = None
env = None
ret = {}
# On Windows, running this from the binary produced by Pyinstaller
# with the ``--noconsole`` option requires redirecting everything
# (stdin, stdout, stderr) to avoid an OSError exception
# "[Error 6] the handle is invalid."
ret.update({'stdin': subprocess.PIPE,
'stderr': subprocess.PIPE,
'startupinfo': si,
'env': env })
return ret
app = QtGui.QApplication(sys.argv)
v = win()
v.show()
sys.exit(app.exec_())
私が.specファイル内のデータを「cmd.bat」を追加しました:(それはプッシュボタンで形だけだinterface.pyファイルは、あなたがしたい場合、私はそれが非常に関連性がないの思考、here, in a pastebin.com fileです) pyInstallerの、そして機能subprocess_argがサブプロセスの問題を回避するためにここにある(文書hereにmentionnedとして)
は、まず私は、私はまだ働いていない、それに対するすべての参照を削除しようとしました、問題はサブプロセスにリンクされていたと思いました。シリアルと同じです。また、.specファイルにdebug = True
を設定して実行可能ファイルをデバッグしようとしましたが、コンソールからファイルを実行しようとすると、何も起こらず、最初の行でブロックされたままです。
誰かが助けることができれば!前もって感謝します !
'console = False'を使用していますか?これは、コマンドラインで何も表示されない理由があります。私の最高の推測は、 'インターフェース'が問題の原因だということです。それがビルドに含まれていることを確認するか、ビルドなしでサンプルを作成し、 "フリーズ"しようとします。 – Repiklis
私は 'console = True'と' debug = True'を使います。私は、スペックファイルに含めるデータに 'interface.py'を追加しようとしましたが、まだ動作しません – Wogle220