파이썬 eBooktoPDF 프로젝트: Poetry 적용기

고병찬·2024년 8월 29일

TIL

목록 보기
26/54

이번에 ebook을 하나 샀는데 pdf로 변환해서 보고 싶었다. ebook 뷰어는 너무 구리고 탭에서 필기도 하면서 편하게 보고 싶기 때문이다.

pdf로 어떻게 변환해야 할까 고민하다가 한장한장 스샷을 떠서 pdf로 묶으면 좋을 것 같다고 생각했고 이걸 손으로 다 하는건 힘들 것 같아서 분명 누군가 이걸 자동화해놓았을 거라 생각했다.
역시나 누군가 해놓았다. ebooktopdf

그런데 윈도우 실행파일만 있고 맥 실행파일은 없어서 파이썬 코드를 직접 실행해야 했다.
ui는 pyqt로 되어있어서 신기했다.

아무튼 파이썬 코드를 실행하려고 했는데 라이브러리가 전부 설치가 안되어 있었다. 그런데 중요한 건 프로젝트 내부에 의존성을 관리해주는 어떤 것도 없어서 하는 김에 예전에 궁금했던 poetry를 적용해보기로 했다.

우선 poetry를 설치했다.

brew install poetry

프로젝트 루트폴더에서 poetry 초기 설정을 했다.
터미널에서 여러가지를 물어봤는데 전부 엔터만 눌렀다.

poetry init

그리고 이 프로젝트용 가상환경을 만들어주었다.
아래 명령어를 실행하면 루트 폴더에 .venv폴더가 생긴다!

poetry install

그런데 install 과정에서 마지막에 다음과 같은 에러가 발생했다.

<경로생략>/eBookToPdf/ebooktopdf.py does not contain any element

스택오버플로 다행히 나와 똑같은 사례가 있었고
답변을 읽어보니 poetry에서 디폴트 모드가 packaging mode인데 이때 필수로 버전, 이름 등을 필요로하기 때문에 발생하는 문제라고 한다. 그래서 패키징이 아니라 의존성 관리만 할 목적이라면 아래 방법으로 해결하면 된다고 한다. poetry 문서

//pyproject.toml
[tool.poetry] // 여기 아래에
...
package-mode = false // 추가

이제 가상환경을 켰다.

poetry shell

이후 eBookToPdf.py에서 import하는 라이브러리들은 하나하나 의존성에 추가했다.

poetry add <라이브러리 이름>

그리고 실행했는데 이게 마우스와 키보드를 조작하는 것이라 권한이 필요했는데 내가 실수로 처음에 켜질 때 권한을 허용해주지 못했다.
그런데 난 그것도 모르고 마우스와 키보드를 조작하는 라이브러리 문제인 줄 알고 pynput을 pyautogui로 바꿔도 여전히 마우스와 키보드 조작이 안되어 찾아보다가 레딧 이 글을 보고 vscode 터미널이 아니라 그냥 터미널을 열어서 파이썬 코드를 실행해보니 다시 한번 권한 허용 메시지가 떠서 그때서야 권한 허용을 안해서 생긴 문제라는 것을 알아차렸다.

이후에는 실행에 문제없이 잘되었다!

사용하면서 ui나 기능적으로 조금 더 개선하면 좋을 것 같아서 이 프로젝트를 바탕으로 더 개선해보며 커스터마이징할 계획이다!

profile
안녕하세요, 반갑습니다.

0개의 댓글