일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- feature map
- 인접행렬
- 식별자
- 엔터티
- numpy
- 1x1 Convolution
- dfs
- bottleneck
- 그래프
- Depthwise Separable Convolution
- dp
- 정규화
- resnet
- SQLD 후기
- 데이터모델링
- outer join
- CROSS JOIN
- SQL
- skip connection
- 백준
- 인접리스트
- SQLD
- Two Pointer
- Inductive Bias
- BFS
- get_dummies()
- 연산량 감소
- pytorch
- mobilenet
- depthwise convolution
- Today
- Total
SJ_Koding
requirements.txt 오류 없이 만들기 (@, file:///를 버전으로 바꾸기) 본문
요약:
문제 코드
pip freeze > requirements.txt
해결 코드
pip list --format=freeze > requirements.txt
파이썬을 사용한다면 다른 가상환경, 다른 PC, local --> server, 경진대회 검증소스코드등 환경 자체를 옮겨야하는 경우가 굉장히 많다.
그러기 위해서는 깔려있는 라이브러리와 각각의 버전을 통째로 알고 옮겨야하는데, 대게 requirements.txt라는 파일명을 사용하여 라이브러리를 옮기곤 한다.
이를 위해 터미널에서 널리 알려진 아래의 명령을 사용한다.
pip freeze > requirements.txt
absl-py==1.4.0
accelerate==0.23.0
aiohttp @ file:///rapids/aiohttp-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5
aiosignal @ file:///rapids/aiosignal-1.3.1-py3-none-any.whl#sha256=f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17
aiozmq==0.9.0
albumentations==1.1.0
alembic==1.7.6
ansi2html==1.7.0
anyio==3.4.0
apache-beam==2.48.0
apex @ file:///opt/pytorch/apex
appdirs==1.4.4
argo-workflows==3.6.0
(생략)
해당 파일을 사용해서 다른 가상환경에 설치하려고 하면 버전명이 숫자가 아닌 로컬폴더로 지정될때 에러가 발생할 수 있다. 특히 다른 서버에 환경을 옮길 때 로컬파일을 전송할 수 없으므로 에러가 발생한다.
따라서 아래와 같은 명령으로 로컬에 저장된 버전이 아닌, 단순 숫자형태의 버전을 사용하여 저장할 수 있다.
pip list --format=freeze > requirements.txt
absl-py==1.4.0
accelerate==0.23.0
aiohttp==3.8.4
aiosignal==1.3.1
aiozmq==0.9.0
albumentations==1.1.0
alembic==1.7.6
ansi2html==1.7.0
anyio==3.4.0
apache-beam==2.48.0
apex==0.1
appdirs==1.4.4
argo-workflows==3.6.0
(생략)
이전 결과와 달리 숫자로 버전을 명명했다.
위 파일을 다운로드 받아서 아래의 명령을 실행하면 가상환경을 그대로 복제할 수 있다.
pip install -r requirements.txt
-r 옵션은 파일에 저장된 라이브러리들을 일괄 설치할 수 있게 지원하는 옵션이다.
===========에러 발생시 (GPT4o 답변) ===========
핵심 라이브러리만 추출하기 위해서 시스템 라이브러리와 핵심 라이브러리를 구분하는 방법을 사용할 수 있습니다. 일반적으로 핵심 라이브러리는 requirements.txt
파일에 명시적으로 추가하는 라이브러리들입니다. 따라서, 직접 프로젝트에서 사용하는 주요 라이브러리만 추출할 수 있는 몇 가지 방법이 있습니다.
방법 1: 수동으로 필터링
이미 requirements.txt
파일이 있다면, 수동으로 주요 라이브러리들만 남기고 나머지를 삭제하는 방법입니다.
방법 2: pipreqs
사용
pipreqs
는 프로젝트 디렉토리에서 실제로 사용된 패키지들만 추출해주는 도구입니다.
pipreqs
설치:pip install pipreqs
- 프로젝트 디렉토리에서
pipreqs
실행:이 명령어는/path/to/your/project
디렉토리 내의 모든 파일을 분석하여 실제로 사용된 패키지들만 포함된requirements.txt
파일을 생성합니다. pipreqs /path/to/your/project
방법 3: pip-chill
사용 (이걸로 해결)
pip-chill
은 설치된 패키지 중에 직접 설치한 패키지만을 추출해주는 도구입니다.
pip-chill
설치:pip install pip-chill
pip-chill
사용:pip-chill > requirements.txt
이 명령어는 현재 환경에서 직접 설치한 패키지들만 requirements.txt
에 기록합니다.
요약
위 방법들 중에서 pipreqs
나 pip-chill
을 사용하면 시스템적인 패키지를 제외하고 실제로 사용하는 핵심 라이브러리만 추출할 수 있습니다. pipreqs
는 코드 분석을 통해 필요한 패키지를 추출하고, pip-chill
은 설치된 패키지 중 직접 설치한 패키지만을 추출합니다.
위 방법들을 시도해 보시고, 더 필요한 부분이 있다면 알려주세요!