파이썬

[펌] 0.PyQt5 시작 : Anaconda PyQt5 Pyinstaller 대강(Windows7 64bit)

페이지 정보

본문


ㅁ2019.4.17 최초 작성
ㅁ과정 : PyQt5를 사용해서 UI를 만들고, exe로 컴파일해서 실행해보는 부분까지
ㅁ환경 : Windows7 64bit
ㅁ사용
-Anaconda
--QT Designer : UI 에디터 Tool
--PyQT : UI 패키지
--pyuic : UI -> Py 변환
--pyinstaller : py -> exe 변환
-PyCharm : 에디터 

ㅁ요약(설치->창띄우는 프로그램 실행까지)
*Anaconda 설치를 설명해둔 블로그 : https://tariat.tistory.com/54

-QT Designer 실행 : 아나콘다 설치폴더/library/designer.exe
(혹은 /pkgs/~~로 길게 나열된 디렉토리에도 있는데.. 동일한 파일로 보이니 library꺼 사용)
--UI 편집 후 저장 : test.ui

-아나콘다 실행 : Anaconda Prompt
--PyQt5 최신버전으로 재설치 : pip install pyqt5
*아나콘다 설치하면 기본으로 깔려있긴 한데, 컴파일 과정에서 Module not found 오류가 발생했다. 재설치하니 해결
--pyinstaller 설치 : pip install pyinstaller
--ui 컴파일 : pyuic5 test.ui -x -o test.py
* -x 옵션을 넣어야 창 띄우는 실행코드까지 생성된다!!! 명심
--exe 파일 생성 : pyinstaller --onefile test.py
* --onefile : 한개 exe에 다 넣기

>기본적인 구성은 완료하였으므로 이제 내부 코드에 원하는 이벤트들을 붙여서 사용하면 됨

요약끝.

-----------------------------------------------------------

ㅁ발단 및 설치
파이썬 UI 관련하여 찾아보니 생각보다 간단히 정리된 글이 없다... 파이썬으로 UI 짜는 사람이 적기 때문일까.

여튼, 쓰려는 라이브러리가 있는데, 늘 자바나 자바스크립트, JSP 기반으로 프로그램을 짜던터라 이번에도 해당 방식을 고민했었는데, 하려고 보니 난관에 봉착. 자바 스크립트는 해당 라이브러리의 사용을 위해 Node.js 서버를 구동해야하는 이슈가 있고(나는 서버를 쓰면 안되는 환경) 
자바는 해당 라이브러리가 제공해주는 버전이 C 보다 낮은데다가 그 낮은 버전의 기능이 치명적으로 구리다..!
(라이브러리가 기본 C 구현에 자바 래핑이라 버전을 못따라가는듯)

그래서 울며 겨자먹기로 C기반의 프로그램을 고민하게 되었다.
MFC로 짤까 했는데 MFC와 C++은 본능적인 혐오가 있는지라 배제

기왕 하는거 파이썬이나 공부해볼까 하는 생각에 파이썬 기반의 UI를 찾아보기로 했다.

찾아보니 자바 스윙마냥 PyQt 라는 이름의 UI 지원 Tool이 있기에 고고싱~

따로 깔기 귀찮았는데 때마침 아나콘다(Anaconda)라는 패키지가 있더라.

현재 기준 PyQt5가 최신이고 해당 버전을 지원해주길래 망설임 없이 설치
*3.7버전 64bit graphical for window 로 설치
*설치할 때 보면 환경변수를 윈도우에 박을지 아닐지 선택하는 부분이 나온다.
default는 Off고 On은 비추천이라 함. 만일 체크하면 Dependancy 등등의 이유로 경고를 안내함.
그래서 왜지 하고 보니 따로
Anaconda Prompt(윈도형식) 및
Anaconda Powershell Prompt(리눅스형식)를 제공해주기 때문이었다.
실제 아나콘다용 파이썬 쓸 때는 cmd 프롬프트가 아닌 제공해주는 프롬프트를 실행해서 할 것.

에디터는 파이참이 좋다길래 설치
*무료인 Community 버전 쓰자

ㅁQT Designer 사용
PyQt에서는 QT Designer 라는 프로그램으로 UI Tool을 제공해준다.
이클립스에서 자바스윙 연동하는 것처럼 기본 파이썬 에디터랑 결합해서 편집을 제공해주는 방법이 있으면 좋을텐데, 찾아본 바 그렇게까지는 제공해주지 않는듯.
일단 안내해주는 방식은 UI, 코딩 따로였다.

사용하려고 보니 해당 프로그램은 따로 설치할 필요 없이 아나콘다를 설치하면 내장되어있다. 개꿀!
경로는 아나콘다 설치폴더/library/designer.exe
입맛대로 만든 후 .ui 파일로 저장하자.

ㅁUI 프로그램 생성
Designer를 이용해서 UI 파일을 생성해준 후, 해당 UI를 파이썬에 띄우는 방법은 2가지정도가 있다고 한다.
1) py 소스코드에 ui 파일을 로드하여 사용
2) ui파일 자체를 py 코드로 변환하여 사용

위에서 1) 의 경우가 수정 보완이 좋다곤 하는데, 귀찮아서 배제...
2) 의 경우로 진행!!

ui파일을 py 코드로 변환하는데는 pyuic 라는 명령어를 사용해야 한다.
사용하는 PyQt5 에서는 pyuic5 버전으로 사용
>pyuic5 test.ui
 : 위와같이 명령어를 적으면, 해당 UI가 어떤 코드로 변환되는지 콘솔에 출력해준다.
하지만 우리는 py 파일로 만들어야 하므로
>pyuic5 test.ui -o test.py
 : -o 옵션을 통해 output 파일을 지정해주었다. 이렇게 하면 화면에 출력되던 py 코드가 파일로 저장된다.
하지만, 이렇게 하면 UI가 py 코드로 변환만 될 뿐, 실행 가능한 코드로 완성되진 않는다. 우리는 창을 띄우는 파이썬 코드를 만들어야 하므로
>pyuic5 test.ui -o test.py -x
 : -x 옵션을 통해 UI 를 띄우는 실행 코드까지 포함한 파이썬 파일이 생성된다. 이렇게까지 하면 원하는 py 파일 완성!

>python test.py 실행하면 실제 UI가 뜨는지 테스트할 수 있다.

ㅁexe 파일 생성
exe 파일을 생성해주는 방법중에 가장 간단한 방법은, pyinstaller를 설치하는 것이다.
anaconda 환경에서는
>pip install pyinstaller 명령어로 간단히 설치 가능.
사용법 또한 간단하다.
>pyinstaller test.py
매우간단.... 헌데 이렇게 만드는 경우 exe 파일 외 부산물들이 많이 생겨서 번거롭다.
그래서 있는 옵션이 exe 하나의 파일로 패키징하는 --onefile 옵션이다.
>pyinstaller --onefile test.py
이렇게 하면 한개 파일로 프로그램이 생성된다.
창 하나만 해서 프로그램 만들어봤는데 용량이 34메가 ㅋㅋㅋㅋ UI 관련 라이브러리들 용량이 꽤 되는듯

이렇게 해서 완성!

이런저런 게시물들 찾으면서 혼재되어있는 정보들이 귀찮아서 기억저장용으로 작성해둔다.
괜히 다른것들 이것저것 따라했다가 오류만 계속나고 고생만 죽어라했기에.... 그냥 PyQt5 쓸거면 이렇게 하시라


관련자료

등록된 댓글이 없습니다.
Today's proverb
고이다 못해 흘러내리는 침을 삼길 수만 있다면 세상에서 가장 행복한 사람이다. (장 도미니크 보비, 사고로 왼쪽 눈꺼풀만 움직이게 된 저널리스트)