개발 이야기/개발툴 및 기타 이야기

PyCharm에 자주 쓰는 툴 설치

가끔.하늘 가온아 2020. 9. 22. 19:14
반응형

자주 사용하는 툴들을 PyCharm에 External Tools에 연동하는 절차와 사용법을 기록합니다.

 

PyQt5 : pypi.org/project/PyQt5/

Qt Designer : pypi.org/project/PySide2/

PyUIC5 : pypi.org/project/pyqt5-tools/

PyInstaller : pypi.org/project/pyinstaller/

 

아래 내용은 PyCharm 2020.2.x, Python 3.8x와 Windows 10에서 진행된 내용입니다.

 

Qt Designer

Qt Designer는 Window를 디자인하기 위한 툴 입니다. 

 

PySid2를 설치하면 C:\Users\YOURNAME\AppData\Local\Programs\Python\Python38\Lib\site-packages\PySide2 에 설치됩니다.  (YOURNAME는 사용하는 계정으로 바꿔주세요.)

 

File -> Settings -> Tools -> External Tools 에서 + 아이콘을 눌러 툴을 설정합니다. 

 

Name에 "Qt Designer" 입력

Program에 C:\Users\YOURNAME\AppData\Local\Programs\Python\Python38\Lib\site-packages\PySide2\designer.exe 입력

Arguments에 $FilePath$ 입력

Working directory에 $ProjectFileDir$ 를 입력

 

등록이 완료되면 Tools -> External Tools 메뉴에서 Qt Designer를 확인할 수 있습니다. 

 

PyUIC5 

Qt Designer로 제작된 .ui 파일을 .py 파일로 변환해주는 툴입니다.

 

File -> Settings -> Tools -> External Tools 에서 + 아이콘을 눌러 툴을 설정합니다. 

 

Name에 "Ui2Py" 입력

Program에 C:\Users\YOURNAME\AppData\Local\Programs\Python\Python38\Scripts\pyuic5.exe 입력 (YOURNAME는 사용하는 계정으로 바꿔주세요.)

Arguments에 $FileName$ -o $FileNameWithoutExtension$.py 입력

Working directory에 $ProjectFileDir$ 를 입력

UI 파일을 열고 마우스 우측 버튼을 눌러 External Tools 메뉴에서 Ui2Py를 선택하면 ui파일을 py 파일로 변환합니다.

 

PyInstaller 

프로젝트를 단독으로 실행 가능한 파일로 만들어주는 툴입니다. 

 

File -> Settings -> Tools -> External Tools 에서 + 아이콘을 눌러 툴을 설정합니다. 

 

Name에 "PyInstaller" 입력

Program에 C:\Users\YOURNAME\AppData\Local\Programs\Python\Python38\Scripts\pyinstaller.exe 입력 (YOURNAME는 사용하는 계정으로 바꿔주세요.)

Arguments에 --onefile --windowed $FilePath$ 입력 (콘솔 응용 프로그램일 경우 --windowed 옵션을 삭제하시면 됩니다.)

Working directory에 $ProjectFileDir$ 를 입력

등록이 완료되면 Tools -> External Tools 메뉴에서 PyInstaller를 선택해 실행하면 빌드가 진행됩니다. 빌드 후 프로젝트 폴더에 dist 폴더가 생성되고 그 안에 실행 가능한 파일이 생성됩니다. 

 

프로젝트에 어떤 모듈을 설치했는지에 따라 간혹 "Failed to execute script ... " 라는 에러 메세지가 뜨면서 실행되지 않는 경우가 발생할 수 있습니다. 

 

이때는 --windowed 옵션을 제거 후 터미널 화면에서 실행해보면 어떤 모듈을 찾을 수 없어 실행이 안되는지 확인이 가능합니다.

 

이 문제가 발생하는 이유는 PyCharm의 경우 빌드환경을 툴에서 프로젝트 별로 운영하기 때문인데, 이는 해당 프로젝트에 venv로 시작하는 폴더명이 있는 것을 통해 알 수 있습니다. 

 

PyCharm에서 프로젝트를 만들면 기본적인 venv 폴더를 만들어 운영하며, 프로젝트에 설치한 모든 모듈들은 해당 프로젝트에만 종속적으로 설치됩니다. 설치 위치는 해당프로젝트폴더\venv\Lib\site-packages 입니다.

 

pyinstaller는 기본 설치 환경인 C:\Users\YOURNAME\AppData\Local\Programs\Python\Python38\Lib\site-packages 에서 모듈을 찾아 프로젝트에 포함시키기 때문에 PyCharm에서 프로젝트에 종속적으로 설치된 모듈의 경우는 찾을 수 없습니다. 

 

이를 해결하기 위해서는 터미널에서 다시 한번 관련 모듈을 설치한 후 재빌드하면 문제가 해결됩니다.

 

(2021/02/23 추가)

 

pyInstaller로 빌드 중 "UnicodeDecodeError .. " 관련 에러가 발생할 경우 이 링크를 확인하세요. 4.0 이상 버전에서 문제가 없다고 하지만 4.2인 현재도 여전히 이슈가 발생합니다.

 

저는 compat.py 코드에서 line 326의 코드를 아래와 같이 수정했습니다.

out = out.decode(encoding, "replace")

 

pyInstaller의 다른 주의할 점으로는 데이터 파일(bundle file)은 포함되지 않는다는 것입니다. 

 

예를들어 wordcloud를 사용할 경우 빌드 후 exe 파일을 실행하면 stopwords가 없는 에러가 발생합니다. 이를 해결하기 위해 --add-data 옵션을 사용하거나 spec 파일의 Analysis datas 옵션에 필요한 파일을 추가하여 해결할 수 있습니다.

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(['c:\\wordcloud_sample\\main.py'],
             pathex=['c:\\wordcloud_sample'],
             binaries=[],
             datas=[('stopwords','wordcloud')],
             .
             .
             .
             

 

No module Named 에러 발생 시.. 

 

.spec 파일의 hiddenimports에 해당 모듈명을 포함해주면 됩니다.  

 

 

Mecab 사용 시 발생하는 dicpath 관련 문제는 아래 블로그를 참고하시면 됩니다.

joyhong.tistory.com/129

 

이래저래 처리해야 할 것들이 많네요. -_-a

반응형
1 2 3 4 5 6 7 8 ··· 41