2017-10-31 1 views
0

오류 :이 응용 프로그램은 ""에서 Qt 플랫폼 플러그인 "windows"를 찾거나로드 할 수 없어 시작하지 못했습니다.Pyinstaller --onefile 실행 파일은 QT_QPA_PLATFORM_PLUGIN_PATH가 설정된 경우에만 작동합니다.

문제 : \ esandberg \의 AppData \ 로컬 \ 연속체 \ anaconda3 \ PKGS QT-5.6.2-vc14h6f8c307_12의 \ 라이브러리 \ \ 플러그인 \ 플랫폼 그러나 다음 사용자를 \ : 나는 C에 QT_QPA_PLATFORM_PLUGIN_PATH 환경 변수를 지정하여이 문제를 해결할 수 내 컴퓨터에서만 실행됩니다. 컴퓨터에서 실행되도록 만드는 방법을 모르겠습니다. 하나의 파일로 된 실행 파일을 보냅니다.

원하는 해결책 : 실행 파일이 번들로 제공되어 다른 컴퓨터에 배포 될 때 Qt 플랫폼 플러그인이있는 위치를 자동으로 알 수있는 방법.

필자가 작성한 프로그램에 대해 하나의 파일 실행 파일을 생성하기 위해 PyInstaller를 사용하려고합니다. 내 프로그램은 다음과 수입이 있습니다

pyinstaller.exe --onefile --windowed --hidden-import=tkinter --hidden-import=scipy --hidden-import=matplotlib --hidden-import=fixtk --hidden-import=scipy.integrate MY_FILE_NAME.py 

주의 사항 : 사용자가 Tkinter의 버튼을 사용하여 플롯을 시도 할 때까지 실행은 모든 컴퓨터에서 잘 작동

import numpy as np 
import os 
import imageio 
from matplotlib import pyplot as plt 
import numpy.fft as fft 
import tkinter as tk 
import tkinter.filedialog as FD 
import time 
from scipy import signal 

여기 내 pyInstaller 중에 명령입니다. 오류가 발생하면 ERROR가 표시됩니다.

나는 모든 비슷한 질문에서 해결책을 시도했지만 아무도 효과가 없었으므로이 독특한 경우를 다루는 데 도움주세요!

미리 도움 주셔서 감사합니다.

에릭

답변

0

당신이 당신의 libs와 연결하는 경우 동적으로, 당신은 실행 파일과 일부 라이브러리를 제공해야합니다. 설치 Qt 폴더에는 폴더 플러그인/플랫폼이 있습니다.

당신이하고 싶은 것을 성취하는 가장 쉬운 방법은 실행 파일과 같은 폴더에 그 라이브러리를 넣는 것입니다.

더 좋은 방법은 QCoreApplication::addLibraryPath(...)을 사용하여 응용 프로그램이 env 변수 없이도 해당 lib를 찾을 수 있도록하는 것입니다.

libs를 정적으로 링크하려면 .pro 파일을 수정하여 사용할 플러그인을 지정해야합니다. here을 참조하십시오.

또한 more doc about deployement입니다.

+0

그것은 불쾌한 방법으로 실행되었습니다 (폴더와 플랫폼을 \ 실행 파일과 동일한 폴더에 넣고 \ platform \에 qwindows.dll을 넣을 수는 있지만). 더 이상 단일 파일 실행 파일이 아닙니다. QCoreApplication :: addLibraryPath (...)를 파이썬에서 어떻게 만들 수 있습니까? – Erik

+0

나는 exat 같은 것을 생각하고 있었다. PyInstaller 나 tkinter를 모르지만 tkinter가 라이브러리를 제공해야한다고 생각합니다. tkinter 문서에 몇 가지 단서가 있습니까? – Eynix

+0

찾았습니다! [PyInstaller의 사양 파일] (https://pythonhosted.org/PyInstaller/spec-files.html)을 살펴보십시오. – Eynix

0

이 특정 오류는 필자의 Python 3.6 사용으로 인해 발생했습니다. 필자는 Python 3.4로 전환하고 동일한 스크립트에서 pyinstaller를 실행했으며 더 이상 qwindows dll에 문제가 없습니다! scipy.signal을 가져 오기 위해 새로운 문제가 발생했습니다. 외모가있는 사람에게 도움이 되었기를 바랍니다!

관련 문제