안녕하세요 오랜만에 글을 쓰네요!
앞으로는 자주자주 쓰도록 반성하겠습니다🙇🏻♀️
이제 개발자로 취업한 지 1년이 딱 지났는데요!
왜 Python을 사용했고 어떤 환경에서 사용했는지 대해 설명 드리겠습니다 Let's go❤️
업무 내용
개발 환경 |
OS : Window IDE : VSCode Server : Linux / Apache&Tomcat 주로 폐쇄망에서 개발진행 |
업무 요청 내용 | 운영중인 서비스 서버 내 불 필요하거나 사용하지 않는 JSP 파일을 삭제하라는 보안 점검 결과로 인한 해결 |
해결 하기 위한 고민 | 요청 경로 상 존재하는 JSP파일은 몇개인가? 실제 사용중인 JSP는 어떤 것 인가? 사용중인 JSP에 대한 기준은 어떻게 할 것 인가? 사용자가 Access 시 로그는 어디에 남기고 있는 가? 로그 내용 중 URL 주소나 확인할 수 있는 내용이 있는 가? |
체크한 내용 | 요청 경로 상 존재하는 JSP파일은 총 135개 실제 사용 중인 JSP의 기준은 Access Log를 통해 접근한 기록이 3개월 내 횟수를 확인 후 기준 설정 Access Log는 톰캣 서버 내 Access Log 파일 내 있음. 관리자 경우 Access Log를 인터셉터를 통해 DB에 기록 되었지만, 일반 사용자의 Access Log는 Log파일로 날짜별 기록 되고 있으며 DB에 전달 되지 않음. Log파일은 매일 오전/오후 분할 되어 기록 되고 있음. 2025-01-01 ~ 2025-05-13일 까지의 Access Log를 기반으로 135개의 JSP파일에 접근 이력이 있는지 검출 해야함. 운영 서버의 2곳에 검사해야하는 Access Log파일은 각 264개, 총 528개 |
여기에서 난 528개의 파일에서 135개의 JSP 요청 기록을 grep으로 검색하기가 무서웠다😱
그래서 생각한 건 예전에 나도 코딩 책으로 배운 파이선을 이용해 로그 파일을 병합하고 거기에서 추출해 엑셀 파일로 빼면 어떨까? 란 생각을 하게 되었다.
파이썬을 폐쇄망 PC에 구성하고 해결하기까지 소요된 시간은 3시간 정도였다.
파이썬&VSCode 환경 설정
온라인 PC(외부망 PC)
처음에 구성할 때 먼저 했던 것은 파이썬 exe파일을 다운로드하고 VSCode에서 Python 플러그인을 다운로드하였다(VSIX)
Python.exe 다운 경로 : http://python.org/downloads/
Download Python
The official home of the Python Programming Language
www.python.org
아나콘다를 사용하지 않고 VSCode에서 진행할 예정으로 Extention을 VSIX 파일로 받아 업로드했다.
추가로 폐쇄망에선 pip를 사용하며 외부 패키지를 다운로드할 수 없기 때문에 폐쇄망에서 테스트를 했을 때
패키지가 없다는 문구가 나오면 온라인망에서 검색해 다운로드하였다.
오프라인 PC(내부망 PC)
python 설치 시 첫 화면에 나오는 PATH체크를 해야 자동으로 시스템변수를 잡아준다.
혹시라도 체크를 하지 않았을 경우 python PATH 경로 잡는 방법을 별도 검색 해 잡아야 한다.
(안 하고 설치했을 경우 구글에 Path 경로 설정법 검색하면 많이 나오니 참고해 주세요❤️)
설치는 두 가지 체크 후 Install Now를 누른 뒤 설치 완료 하였다.
설치 완료 후 CMD창에서 python --version을 입력해 Python을 인식하고 있는지 확인하면 완료.
Python 설치 완료 후 VSCode에 VSIX 설치를 했다.
VSCode 내 명령어 팔레트에다가 > V 만 입력하면 나온다.
다운로드하였던 경로에 있는 VSIX를 클릭하여 설치하면 완료
그리고 다시 VSCode 명령어 팔레트에서 > Python Select Interpreter를 선택해 설치 한 Python을 선택해 주면 된다.
그리고 print('hello')를 적어보고 실행을 눌렀을 때 정상적으로 출력되는지 확인하면 기본적인 세팅은 끝.
이제 패키지를 설치해야 한다.
패키지 오프라인 설치에서 삽질을 너무 많이 했어서 별도 목차로 작성했다😭
파이썬 패키지 설치 : setup.py
처음에 작성한 요구사항을 진행하려면 pandas를 사용해야 했다.
검색을 하다 오프라인으로 패키지를 설치하는 방법은 크게 2가지가 있었는데
1번째는 온라인 PC에서 어느 정도 테스트를 한 뒤 패키지를 다운로드하여 whl 형식을 폐쇄망 PC에서 설치하는 방법이 있었고
2번째는 패키지 인덱스 사이트에서 tar파일을 다운로드하여 설치하는 방법이 있었다.
나는 그냥 2번째를 선택했다.
패키지 다운 경로 : https://pypi.org/
PyPI · 파이썬 패키지 인덱스
파이썬 패키지 인덱스(PyPI)는 파이썬 프로그래밍 언어를 위한 소프트웨어 리포지터리입니다.
pypi.org
tar파일을 설치할 땐 Python 라이브러리 경로로
이동해 압축 해제한 폴더를 site-packages에 넣어주고
터미널 창에서 해당 경로로 이동 하고 아래 명령어를 입력한다.
python setup.py install
어떤 블로그엔 CMD 창에 'Python' 입력 시 시작경로가 뜬다고 하지만
나는 나오지 않아 아래 캡처처럼 시작 경로를 찾아 라이브러리 경로로 이동했다
보통 아래 경로와 비슷한 구조로 되어있다.
C:\User\사용자이름\AppData\Local\Programs\Python{버전}\Lib\site-packages
이렇게 tar파일을 넣어 놓은 상태에서 VSCode의 터미널 창에서 해당 경로로 이동한다.
Pandas를 설치하기 전 우선 openpyxl-3.1.5부터 설치를 진행했다.
하지만 , 모듈 에러가 났는데 의존성 문제로 확인된다
ModulNotFoundError : No module named 'setuptools'라고 로그가 나왔다
그래서 다시 setuptools를 다운로드하여서 설치를 진행했다.
setuptools을 정상 설치 후 openpyxl-3.1.5를 설치했다.
이제 Pandas를 설치하려 보니 Pandas 폴더 내부에 setup.py가 없었다😱
검색해 보다 알게 된 사실
최근 파이썬 패키징 및 빌드 방식이 표준화되면서 setup.py 대신 pyproject.toml 파일을 사용하는 방식으로 변화하고 있다고 한다.
그래서 pandas에서도 tar.gz 파일에 보면 setup.py가 아닌 pyproject.toml 파일이 있었다.
pyproject.toml에 관하여 간략히 설명하면 아래의 표와 같다.
pyproject.toml 도입 배경 |
과거 파이썬 패키징은 주로 setup.py 파일을 사용했다. 이 파일은 파이썬 코드로 작성되어 있어 유연성이 높았다. 하지만 이러한 유연함 때문에 빌드 도구(setuptools 등)와 설정 방식이 통일되지 않고 파편화되는 문제가 발생했다. 이로 인해 pip와 같은 패키지 설치 도구가 패키지를 빌드하기 위해 필요한 도구나 의존성이 무엇인지 사전에 파악하기 어려웠고, 패키지 설치 및 배포 과정에서 비일관성과 복잡성이 초래되었다. 이러한 문제를 개선하고 파이썬 패키징 생태계의 빌드 시스템을 표준화하기 위해PEP(파이썬 개선 제안)들이 등장했다. PEP 518에서 빌드 시스템의 요구사항을 명시하기 위한 `pyproject.toml` 파일 사용이 제안되었고, 이어 PEP 517에서 `pyproject.toml`을 통한 빌드 시스템과 설치 도구 간의 표준적인 상호작용 방식이 정의되었다. `pyproject.toml`은 TOML 형식으로 작성되어 파이썬 인터프리터 실행 없이도 파일 내용을 쉽게 파싱할 수 있다. 이를 통해 프로젝트의 빌드 시스템 구성 및 의존성을 명확하게 선언하는 것이 가능해졌다. |
빌드 절차 | 사용하는 패키지 빌드 및 설치 과정은 일반적으로 '프론트엔드'(설치 도구)와 '백엔드'(실제 빌드 도구)의 상호작용으로 진행된다. 1. 빌드/설치 명령 실행: 사용자가 pip install . 또는 python -m build 와 같은 패키지 빌드 또는 설치 명령을 실행한다. pip나 build와 같은 도구가 프론트엔드 역할을 한다. 2. pyproject.toml 파일 인식 및 파싱: 프론트엔드 도구는 프로젝트 루트 디렉토리에서 pyproject.toml 파일을 찾아 내용을 읽고 파싱한다. 3. 빌드 시스템 정보 파악: 프론트엔드는 pyproject.toml 파일 내의 [build-system] 섹션을 파싱하여 빌드 프로세스에 필요한 의존성(`requires`)과 실제 빌드를 수행할 백엔드 모듈의 이름(`build-backend`)을 파악한다. 4. 빌드 환경 구성 및 의존성 설치: 프론트엔드는 `build-system.requires`에 명시된 패키지들을 격리된 빌드 환경에 설치한다. 이는 주된 파이썬 환경과의 간섭을 방지하고 안정적인 빌드를 보장하는 목적이다. 5. 빌드 백엔드 호출: 빌드 의존성 설치가 완료되면, 프론트엔드는 `build-system.build-backend`에 명시된 파이썬 모듈을 로드하고 PEP 517 표준에 정의된 함수들(예: `get_requires_for_build_wheel`, `build_wheel`)을 호출한다. 6. 패키지 빌드 수행: 빌드 백엔드는 호출된 함수에 따라 프로젝트 소스 코드를 읽고 `pyproject.toml`에 정의된 해당 백엔드의 추가 설정(예: `[tool.setuptools]`, `[tool.poetry]`)을 참고하여 실제 패키지 빌드 작업을 수행한다. 이 과정을 통해 `.whl` 또는 `.tar.gz`와 같은 표준 배포 파일이 생성된다. 7. 설치/배포 완료: 프론트엔드는 빌드 백엔드가 생성한 배포 파일을 사용자의 환경에 설치하거나 PyPI와 같은 패키지 저장소에 배포하는 등 후속 작업을 진행한다. 이러한 절차를 통해 `pyproject.toml`은 다양한 빌드 도구와 설치 도구 간의 명확하고 표준화된 약속 역할을 수행한다. |
참고 URL : https://www.bearpooh.com/222
pyproject.toml을 이용한 파이썬 패키징 (2) - pyproject.toml의 등장
지금까지 파이썬 프로젝트의 패키징은 setuptools의 setup.py를 사용하는 것이 일반적이었다. setup.py를 사용한 파이썬 프로젝트 폴더 구성은 아래 문서를 참고한다. 파이썬 프로젝트 폴더 구성하기
www.bearpooh.com
결국엔 poetry 패키지를 설치하고 그래야 하는데,
사실 너무 귀찮았다..
그래서 다시 온라인 PC에서 다른 방법을 찾기로 했다.
그다음 방법은 다음 포스팅에 이어 작성하겠다..!!
❤ 김춘장이의 위키백과 - 나만의 공부 기록 Tistory ❤
gayulz - Overview
개발자가 되고싶은 개발어린이💟. gayulz has 11 repositories available. Follow their code on GitHub.
github.com
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Pʏᴛʜᴏɴ' 카테고리의 다른 글
주니어 개발자 : 💡 Excel 파일에서 필요한 데이터 추출, 병합하기 (0) | 2025.05.26 |
---|---|
주니어 개발자 : 💡 서버 별 로그 .txt 파일 병합, Excel 파일 변환 (1) | 2025.05.26 |
주니어 개발자 : 💡 Python 오프라인 패키지 설치 (0) | 2025.05.17 |