글을 이어서 쓰기 전에,
전체 코드를 보고 싶으신 분들을 위해 파일을 올려드립니다.
마음껏 활용해주세요.
.format()
프로그래밍을 조금 공부한 사람들은 아마 알 겁니다.
문자열 다루는데 포매팅을 안 쓰는 사람은 드물다는 걸요.
.
파이썬은 %, .format(), f-string의 3가지 포매팅 방법을 제공하는데
간단히 소개하자면, 버전이 업데이트 되면서 하나하나 기능도 업그레이드 된 겁니다.
저는 이전까지 %를 사용했었는데
이번에 .format() 사용해보고 어찌나 편리하던지.
%의 경우 뒤에 s / d 등 해당 데이터 타입을 결정해줘야 하지만
.format()부터는 그럴 필요가 없다는 점!!
(f-string은 코드가 난해해지는 감이 있어서 아직 필요성을 못느꼈습니다..)
절대 경로와 상대 경로
해당 코드를 처음 작성할 때는 파일을 배포할 생각이 없었다.
이 프로그램은 여러 파일을 열고, 생성하고, 쓰고, 닫는데
모든 경로를 해당 파일의 속성을 보면 나오는 절대경로로 해놨다.
.
.
절대경로의 장점은 파일의 위치를 정확히 알기만 하면 오류 없이 그곳에 도달할 수 있다.
하지만, 실행되는 환경이 사용자마다 다르기 때문에
내 파일을 다른 사람에게 넘겼을 때 오류가 발생할 수도 있다.
그래서 나는 상대경로로 파일을 작성했다.
.
상대경로는 말 그대로 현재 실행하는 파일(예시로 파이썬 파일)의 위치를 기준으로
도달하고자 하는 파일의 위치를 표시하는 것이다.
./ 는 현재 위치, ../ 는 상위 폴더(디렉토리)를 의미한다.
그래서 내가 배포한 파일의 형태가 변경되지 않는 한, 프로그램은 정상작동될 것이다.
.
.
배포
가벼운 프로그램이라 그런지 배포하는 과정은 생각보다 어렵지 않았다.
.py 파일로 올리기에는 컴파일러가 없으신 분들께 예의가 아니라고 생각해서
.exe 파일로 만들어서 올려야겠다 생각했다.
.
그래서 열심히 구글링을 했고
다른 사람들과 같이 pyinstaller를 이용했다.
콘솔을 키고 pip install pyinstaller 를 입력해 설치한다.
(cmd 이용할 때는 늘 설레ㅎㅎ)
이후 pyinstaller -F --exclude pandas --exclude numpy 파일명.py 를 입력하면
필요한 파일들과 함께, dist폴더 속에 .exe파일이 생성된다.
('--exclude 모듈명'으로 안 쓰는 대용량 모듈을 없애야 파일용량이 줄어듭니다.)
하지만 작성한 코드 내 경로 때문에 .exe파일을 제 위치에 놓고 배포했습니다.
만약 코드에 상대경로를 사용하는데 바로 이렇게 .exe파일을 만들면 오류가 발생합니다.
이걸 저는 배포파일 만드는 법 구글링하다 우연히 발견했는데요.
(자세한 내용은 아래 사이트 참조)
배포하는 과정에서 폴더 위치(?) 참고하는 경로(?)가 바껴서 생기는 문제라네요.
배포 과정에서 MEIPASS라는 파일이 생기는데
아마 이때 생기는 문제 같습니다.
.
그래서 아래 코드를 입력하고 경로마다 저 함수로 감싸주면 정상 작동합니다.
이 프로젝트(?)를 마친 경험 상
데이터베이스를 만드는 게 정말 너무 힘들었어요.
이걸 누군가에게 해달라 해도 어차피 제가 다시 검수해야 하기에...
.
그거에 비하면 코딩은 어렵지 않았어요.
오히려 재밌었어요.
생각한 대로 구현되고, 코드를 구조적으로 작성하니까 편리하더라구요.
.
비전공자이고 프로그래밍 쪽으로는 과문해서
어마어마한 작품을 만들지는 못하지만, 그래도 이렇게 종종 만들어보려고 합니다.
긴 글 읽어주셔서 감사합니다.
'Programming > TOEIC_ VOCA 테스트 프로그램.py' 카테고리의 다른 글
CODE REVIEW를 가장한 후기글_(상) (0) | 2022.06.22 |
---|---|
단어시험 프로그램 소개 및 사용 방법 (0) | 2022.06.21 |