ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    반응형

    댓글 0

Designed by Tistory.