반응형

Pyinstaller는 python 코드를 exe 파일로 변환하는 라이브러리이다.

사용법은 아래와 같다.

# main.py
from pyfiglet import Figlet


f = Figlet(font='slant')
print(f.renderText('Python'))

결과

# pyinstaller -w -F --icon {icon.ico} main.py

pyinstaller -F .\main.py
  • -w : 콘솔창 출력하지 않음
  • -F : 실행파일 하나만 생성
  • -icon : icon 모양

위 명령어를 실행하면 No module named 'pyfiglet.fonts' 오류가 발생하면서 콘솔창이 자동으로 종료된다.

오류를 해결하기 아래처럼 수행하면 해결된다.

pyinstaller --add-data " .\{Python 경로}\Lib\site-packages\pyfiglet;./pyfiglet" main.py

PyInstaller 명령 옵션에서 시스템의 Pyfiglet 폴더 경로를 제공하면 생성된 dist에 파일이 복사 된다.

728x90
반응형
반응형

많은 사람들이 VSCode를 사용하는 이유는 무료, 가벼운 개발 환경과 다양한 확장 프로그램 지원이 있다.

Visual studio code, Pycharm pro, Android studio, Eclipse, Vi 등 많이 사용해 봤지만 VSCode가 가장 사용하기 좋았다. 당연히 디버깅 기능에 있어서는 Visual studio code나 Pycharm을 이길 수는 없지만, 그럼에도 확장 프로그램을 잘 사용한다면 어느 정도 해결할 수 있다.

이번에 소개하는 확장 프로그램은 Error Lens이다.

Error lens는 파일 작업을 하거나 새 프로젝트를 열 때 실시간으로 모든 오류와 경고를 보여주는 Visual Code의 확장 프로그램이다.

이 확장 프로그램은 많은 프로그래밍 언어 기술에서 사용할 수 있습니다. Python, Javascript, flutter 등으로 이 확장 프로그램을 사용해 볼 수 있습니다.

사용 방법은 간단하다. 설치만 하고 VSCode를 껐다 켜면 된다.

오류와 경고가 포함되어 있는 Python 코드 예시를 보겠다.

 

예시
from urllib import parse
import nump as np            

string_original = '34'fdv       
string_encoded = parse.quote(string_original)
string_decoded = parse.unquote(string_encodedd)
print(string_encoded

Error Lens가 적용되면 아래와 같이 실시간으로 오류와 경고를 보여준다.

별거 없다고 볼 수 있지만 사용하다 보면 굉장히 편하다.

Flutter도 당연히 잘 된다.

Error Lens에는 구성 설정 섹션도 있다. 지연을 설정하여 오류를 표시하고 각 오류 유형에 대한 색상을 변경할 수 있다.

github 주소

https://github.com/phindle/error-lens

 

GitHub - phindle/error-lens: Visual Studio Code extension which enhances the display of errors and warnings.

Visual Studio Code extension which enhances the display of errors and warnings. - GitHub - phindle/error-lens: Visual Studio Code extension which enhances the display of errors and warnings.

github.com

 

728x90
반응형

'VSCode' 카테고리의 다른 글

[VScode] Visual Studio Code Theme 추천  (0) 2021.02.25
[VSCode] VSCode JAVA 세팅.  (0) 2021.01.18
[VSCode] VSCode에서 Jupyter Notebook 사용!  (0) 2021.01.09
[VSCode] Python Pylance 자동완성  (0) 2021.01.09
[VSCode] Python pylint  (0) 2020.12.08
반응형

안녕하세요.

 

오늘은 필터 exe파일을 만들면서 막혔던 오류 부분을 설명하도록 하겠습니다.

 

pyinstaller는 pycharm 이나 pip를 통해 깔아줍니다.

 

pyinstaller 사용법은 아주 간단합니다.

 

pyinstaller [파일명].py

 

가장 많이 사용하는 옵션을 설명하겠습니다.

 

-w : 콘솔창을 띄우지 않습니다.

-F : 파일 하나만 생성합니다. 

 

pyinstaller -w -F [파일명].py or pyinstaller -noconsole -onefile [파일명].py

 

기본적인 사용방법입니다. (당연히 [파일명].py가 존재하는 경로에 pyinstaller를 해주어야 합니다.)

 

아마 이 글을 읽으시는 분들이 방법은 알지만 오류로 인해 검색하시다 보니 여기까지 오시게 되었겠죠?

 

대단한 것은 아니지만 제가 exe파일을 만들면서 접했던 오류들을 해결하면서 배웠던 것을 적도록 하겠습니다.

 

 

 

 

 

 

 

1. unicodeDecodeError : 'utf-8' codec can't decode byte 0xff

 

아마 utf-8 오류가 떠서 uft-8 decoding을 해주셨을겁니다.

 

#-*- coding:utf-8 -*-

 

아마 이 부분을 추가해주셨겠지요?

 

하지만 아쉽게도 uft-8 decoding을 해주어도 똑같은 오류가 발생합니다. 

 

이 오류가 뜨는 이유는 여러분들이 잘못을 한 것이 아니라 pyinstaller의 고질적인 문제라고 합니다.

 

https://github.com/pyinstaller/pyinstaller/pull/3895

 

Specify the utf-8 encoding when opening a text file by bjones1 · Pull Request #3895 · pyinstaller/pyinstaller

This is a fix for #3605, and generally for a number of places in the code where the encoding wasn't specified when opening a file. Since getting this working required more complexity than I exp...

github.com

Python\Lib\site-packages\Pyinstaller\compat.py

 

위 경로에 compat.py를 찾아 열어줍니다.

 

compat.py에 저 아래 라인을 수정해 줍니다.

 

out = out.decode(encoding)

 

a. 해결방법 -> out = out.decode(encoding, errors='ignore')

b. 해결방법 -> out = out.decode(encoding, "replace")

 

저렇게 수정해주시고 다시 돌려보시면 에러를 무시한채 해결됩니다.

 

 

 

 

 

 

2. import module error

 

library를 많이 쓰다 보면 module error가 발생하게 됩니다.

 

pyinstaller로 파일을 만들면은 

 

pycache

build

dist

[파일명].spec

 

이렇게 생성될겁니다.

 

[파일명].spec 을 열어줍니다.

 

[파일명].spec

hiddenimports = []

 

위 부분에 오류가 뜨는 함수를 적어주면 됩니다.

 

예를 들어

 

numpy, matplotlib가 오류가 발생한다면,

 

hiddenimports = ['numpy', 'matplotlib'] 이렇게 추가해주시면 됩니다.

 

pyinstaller가 완전한 실행 프로그램이 아니라서 오류가 많이 발생합니다.

 

저는 프로그램 만드는 것보다 exe파일 만드는 부분에 힘을 너무 많이 사용해서...

 

python이 코딩엔 상당히 강력하지만, exe나 속도는 상당히 취약합니다...

 

하지만 데이터처리나, 라이브러리이 너무 매력적이라서... 

 

pyinstaller 글을 마치도록 하겠습니다.

 

왠지 pyinstaller는 아마 계속해서 새로운 오류가 발생해서 글을 마칠 수 없을 것 같습니다 ㅎ

 

728x90
반응형

+ Recent posts