지금, 나는 

Art is anything you can get away with.

Programming/TOEIC_ VOCA 테스트 프로그램.py

CODE REVIEW를 가장한 후기글_(하).py

hyuckee 2022. 6. 23. 14:13
반응형

글을 이어서 쓰기 전에,

전체 코드를 보고 싶으신 분들을 위해 파일을 올려드립니다.

마음껏 활용해주세요.

TOEIC_VOCA_TEST_PROGRAM.py
0.02MB


.format()

{ } 과 %

프로그래밍을 조금 공부한 사람들은 아마 알 겁니다.

문자열 다루는데 포매팅을 안 쓰는 사람은 드물다는 걸요.

.

파이썬은 %, .format(), f-string의 3가지 포매팅 방법을 제공하는데

간단히 소개하자면, 버전이 업데이트 되면서 하나하나 기능도 업그레이드 된 겁니다.

 

저는 이전까지 %를 사용했었는데

이번에 .format() 사용해보고 어찌나 편리하던지.

%의 경우 뒤에 s / d 등 해당 데이터 타입을 결정해줘야 하지만

.format()부터는 그럴 필요가 없다는 점!!

(f-string은 코드가 난해해지는 감이 있어서 아직 필요성을 못느꼈습니다..)


절대 경로와 상대 경로

해당 코드를 처음 작성할 때는 파일을 배포할 생각이 없었다.

이 프로그램은 여러 파일을 열고, 생성하고, 쓰고, 닫는데

모든 경로를 해당 파일의 속성을 보면 나오는 절대경로로 해놨다.

.

.

절대경로의 장점은 파일의 위치를 정확히 알기만 하면 오류 없이 그곳에 도달할 수 있다.

하지만, 실행되는 환경이 사용자마다 다르기 때문에

내 파일을 다른 사람에게 넘겼을 때 오류가 발생할 수도 있다.

그래서 나는 상대경로로 파일을 작성했다.

.

상대경로는 말 그대로 현재 실행하는 파일(예시로 파이썬 파일)의 위치를 기준으로

도달하고자 하는 파일의 위치를 표시하는 것이다.

./  는 현재 위치,   ../  는 상위 폴더(디렉토리)를 의미한다.

그래서 내가 배포한 파일의 형태가 변경되지 않는 한, 프로그램은 정상작동될 것이다.

.

.

배포

가벼운 프로그램이라 그런지 배포하는 과정은 생각보다 어렵지 않았다.

.py 파일로 올리기에는 컴파일러가 없으신 분들께 예의가 아니라고 생각해서

.exe 파일로 만들어서 올려야겠다 생각했다.

.

그래서 열심히 구글링을 했고

다른 사람들과 같이 pyinstaller를 이용했다.

cmd

콘솔을 키고 pip install pyinstaller 를 입력해 설치한다.

(cmd 이용할 때는 늘 설레ㅎㅎ)

 

이후 pyinstaller -F --exclude pandas --exclude numpy 파일명.py 를 입력하면

필요한 파일들과 함께, dist폴더 속에 .exe파일이 생성된다.

('--exclude 모듈명'으로 안 쓰는 대용량 모듈을 없애야 파일용량이 줄어듭니다.)

 

하지만 작성한 코드 내 경로 때문에 .exe파일을 제 위치에 놓고 배포했습니다.


만약 코드에 상대경로를 사용하는데 바로 이렇게 .exe파일을 만들면 오류가 발생합니다.

이걸 저는 배포파일 만드는 법 구글링하다 우연히 발견했는데요.

(자세한 내용은 아래 사이트 참조)

 

Pyinstaller, autopytoexe 등으로 파이썬(Python) 배포파일(.exe) 만들때, 발생하는 Fatal Error, failed to execute s

파이썬 공부하기 시작한 지 얼마되지 않았지만... 이번에 작은 프로젝트 하나를 스스로 수행해 보면서... ...

blog.naver.com

 

배포하는 과정에서 폴더 위치(?) 참고하는 경로(?)가 바껴서 생기는 문제라네요.

배포 과정에서 MEIPASS라는 파일이 생기는데

아마 이때 생기는 문제 같습니다.

.

그래서 아래 코드를 입력하고 경로마다 저 함수로 감싸주면 정상 작동합니다.

경로 설정


이 프로젝트(?)를 마친 경험 상

데이터베이스를 만드는 게 정말 너무 힘들었어요.

이걸 누군가에게 해달라 해도 어차피 제가 다시 검수해야 하기에...

.

그거에 비하면 코딩은 어렵지 않았어요.

오히려 재밌었어요.

생각한 대로 구현되고, 코드를 구조적으로 작성하니까 편리하더라구요.

.

비전공자이고 프로그래밍 쪽으로는 과문해서

어마어마한 작품을 만들지는 못하지만, 그래도 이렇게 종종 만들어보려고 합니다.

긴 글 읽어주셔서 감사합니다.

728x90