티스토리 뷰
Python으로 개발된 서비스를 배포할 일이 생겼다.
그런데 개발자가 Python 프로젝트를 아무 지식도 없이 만들어서
가상환경에서 작업하지 않고, 로컬 & 글로벌에서 모든 작업을 처리했다.
그러다보니 어떤 의존성 패키지를 썼는지 명확히 알 수가 없었다.
당연히 이 명령어도 쓸 수 없었다.
pip freeze > requirements.txt
다행히 파이썬에서는 프로젝트에서 사용한 의존성을 자동 추출할 수 있는 스크립트를 제공한다.
pipreqs라는 이름의 패키지다. pip install로 설치할 수 있다.
그런데 설치부터 아래와 같은 에러를 발생시킨다.
> pip install pipreqs
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 'C:\\Users\\[PC name]\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python312\\site-packages\\jedi\\third_party\\typeshed\\third_party\\2and3\\requests\\packages\\urllib3\\packages\\ssl_match_hostname\\_implementation.pyi'
HINT: This error might have occurred since this system does not have Windows Long Path support enabled. You can find information on how to enable this at https://pip.pypa.io/warnings/enable-long-paths
이것도 아래에 있는 문제와 연관성이 있는 문젠데 결론은 Python의 경로가 너무 길어서 생긴 문제이다.
https://pip.pypa.io/warnings/enable-long-paths에서 해결하라고 나온다.
페이지에 들어가보면, 아래와 같이 안내한다.
관리자권한으로 powershell을 켜고 아래의 명령어를 작성하고 재부팅한다.
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
다시 pip install을 하면 설치가 정상적으로 진행된다.
> pip install pipreqs
...
Successfully installed ipython-8.12.3 jedi-0.19.1 jsonschema-4.21.1 jsonschema-specifications-2023.12.1 jupyter-client-8.6.0 nbclient-0.9.0 nbconvert-7.16.0 nbformat-5.9.2 pipreqs-0.5.0
설치가 끝났다. 그리고 두번째 문제에 봉착한다.
pipreqs 페이지에 가보면 사용법이 나와있다.
$ pipreqs /home/project/location
Successfully saved requirements file in /home/project/location/requirements.txt
그런데 Windows 10 에서는 위 명령어를 바로 사용할 수 없다.
Windows 10에서 파이썬 패키지를 사용하려면 패키지의 위치를 알아야한다.
파이썬 패키지들은 파이썬 경로의 /Scripts 아래에 있다.
Windows 10 파이썬 경로로 구글에 검색해보면 아래와 같이 안내해준다.
c:\Users\사용자이름\AppData\Local\Programs\Python\Python310
그런데... 없다.
Windows 10에서는 Miscrosoft Store에서 Python을 설치하기를 권장한다.
그런데 MS Store를 통해 Python을 설치하면 Python이 위와 같은 일반적인 위치에 저장되지 않는다.
(기억이 가물 가물한데, 경로를 지정하라는 안내도 없었던 것 같다.)
MS Store에서 Windows 10에 Python을 설치하는 경로 + pipreqs가 있는 스크립트 경로는 아래와 같다.
C:\Users\[PC name]\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\Scripts
그래서 실행은 아래와 같이 하면된다.
C:\Users\[PC name]\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\Scripts\pipreqs ./
...
INFO: Successfully saved requirements file in ./requirements.txt
requirements.txt가 정상적으로 생성된 것을 확인할 수 있다.
마치며
별거 아닌걸로 한참 헤멨다.
그리고 서비스에서 개발 언어는 이것저것 늘리고 싶지 않은데, 자꾸 추가되고 있다.
이에 따라서 인프라도 계속 추가되고 있는데, 이게 맞는 방향인지 모르겠다.
개발 언어/환경은 팀 내 개발자가 적을수록, 작게작게 가는게 좋은데
개발 기한, 개발자의 역량에 맞추다보니
이것저것 늘어나는 상황이라 관리자 입장에서는 머리가 조금 아프다.
'개발 > 개발팁' 카테고리의 다른 글
AWS CloudFront + S3 에서 발생한 CORS 문제 해결하기 (1) | 2024.10.21 |
---|---|
월드 ID(world coin)로 인증하기 with. SpringBoot (1) | 2024.03.30 |
Windows 10에서 WSL1을 WSL2로 업데이트하기 (1) | 2024.02.10 |
SpringBoot에서 Google Indexing API 사용하기 1 (1) | 2024.02.02 |
Windows에서 AWS EC2 접속 시 UNPROTECTED PRIVATE KEY FILE 에러 해결하기 (0) | 2024.01.20 |
- Total
- Today
- Yesterday
- terraform
- 스프링부트
- Elastic cloud
- EKS
- GIT
- springboot
- OpenAI
- AOP
- AWS
- cache
- 티스토리챌린지
- JWT
- Kotlin
- serverless
- 람다
- openAI API
- 오블완
- docker
- ChatGPT
- S3
- CloudFront
- elasticsearch
- OpenFeign
- MySQL
- java
- lambda
- 후쿠오카
- Spring
- Log
- AWS EC2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |