IT_World

[package]requirements.txt 패키지 관리 및 list freeze 정리 본문

OS/Ubuntu

[package]requirements.txt 패키지 관리 및 list freeze 정리

engine 2021. 5. 25. 10:36

환경 os : Ubuntu 18.64

파이썬으로 프로젝트를 진행하게 되면 pip으로 여러 패키지를 설치하게 된다.
pip list를 입력하면  pip으로 현재 가상 환경에 설치된 모든 패키지가 나온다.

$ pip list

pip list

어쨌든 이 패키지들을 그대로 다른 환경에 설치하고 싶을 때는 requirements.txt를 이용해야 한다.
requirements.txt는 현재 가상환경에 설치된 패키지 목록이 나열되어있는 텍스트 파일이다.

이름이 requirements.txt로 정해진 건 아니다. re.txt 등등 마음대로 지어도 되지만, 하나의 룰이다.
대부분 github나 project에서 requirements.txt라는 이름을 사용하고 있으니 웬만하면 requirements로 쓰는 것이 좋다.

requirements.txt 생성은 어떻게 할까

$ pip freeze > requirements.txt

보통

 $ cd/home/사용자이름

밑에 파일이 있다.

만약 파일이 안 보일 경우

$ locate requirements.txt

를 통해 파일을 찾아준다.

 

파일을 열어보면 다음과 같이 버전 정보까지 정리되어 있다.
일일이 패키지를 설치해줘야 한다. 이때 일일이 설치하지 않고 패키지들을 기록해놓을 수 있는 명령어가 pip freeze이다.

그다음 base에 들어있는 가상 환경을 그대로 옮길 가상환경 torch로 변경해준다.

가상환경을 바꿔준 후 다음 명령을 실행하면 모든 패키지를 한 번에 설치해준다.

pip install에 -r 옵션과 함께 패키지 목록이 적힌 파일명을 인자로 주면 된다.

$ pip install -r requirements.txt

잘 설치되었는지 보려면 앞에 적어놓은 pip list를 사용해도 되지만 pip freeze 사용해도 된다.

$ pip list
또는
$ pip freeze

 

tensorboard==2.5.0 같은 경우, tensorboard라는 패키지를 2.5.0 version으로 버전을 지정해서 설치한다는 뜻이다.
하지만 정확히 2.5.0 버전이 아닌, 단순히 해당 버전 이상을 설치하고 싶을 수 있다.

이럴 땐 다음과 같이 해주면 된다.

$ tensorboard>=2.5.0


만약 2 버전 대에서 무작위로 치하고 싶다면 아래처럼 작성해주면 된다.

$ tensorboard>=2.*

 


package list freeze difference 및 option 정리

패키지는 대소 문자를 구분하지 않는 정렬 순서로 나열된다.

list  : 편집 가능한 항목을 포함하여 설치된 패키지를 나열

freeze : 설치된 패키지를 요구 사항 형식으로 출력

 

list 

Options Description Examples
-o, --outdated 오래된 패키지 나열 $python -m pip list --outdated
-u, --uptodate 최신 패키지 나열 $pip list -u
-e, --editable 편집 가능한 프로젝트를 나열 $python -m pip list -e
-l, --local 전역 액세스 권한이있는 virtualenv에있는 경우 전역으로
설치된 패키지를 나열하지 말기
$pip list --local
--user 사용자 사이트에 설치된 출력 패키지 만 $pip list --user
--path <path> 패키지 나열을 위해 지정된 설치 경로로 제한/여러 번 사용가능 $pip list --path
--pre 시험판 및 개발 버전을 포함기본적으로 안정된 버전 만 찾음 $pip list --pre
--format <list_format> 출력 형식을 열 (기본값), 고정 또는 json 중에서 선택 $pip list --format columns
--not-required 설치된 패키지의 종속성이 아닌 패키지를 나열 $pip list --outdated --not-required
--exclude-editable 출력에서 편집 가능한 패키지를 제외 $pip list--exclude-editable
--include-editable 출력에서 편집 가능한 패키지를 포함 $pip list--include-editable
--exclude <package> 출력에서 지정된 패키지 제외 $python -m pip list--exclude
-i, --index-url <url> Python 패키지 색인의 기본 URL   
--extra-index-url <url> --index-url 외에 사용할 패키지 색인의 추가 URL  
--no-index 패키지 색인을 무시 (대신 --find-links URL 만 확인)  
-f, --find-links <url> html 파일에 대한 URL 또는 경로 인 경우 sdist (.tar.gz) 또는 wheel (.whl) 파일과 같은 아카이브에 대한 링크를 구문 분석한다. 디렉토리 인 로컬 경로 또는 file : // URL이면 디렉토리 목록에서 아카이브를 찾음 VCS 프로젝트 URL에 대한 링크는 지원되지 않는다.  

출처 : https://pip.pypa.io/en/stable/cli/pip_list/

 

pip list - pip documentation v21.1.2

Previous pip uninstall

pip.pypa.io

freeze

Options Description
-r, --requirement <file> 출력을 생성 할 때 주어진 요구 사항 파일의 순서와 주석을 사용하십시오. 이 옵션은 여러 번 사용가능
-f, --find-links <url> 출력에 추가 될 패키지를 찾기위한 URL
-l, --local 전역 액세스 권한이있는 virtualenv에있는 경우 전역 설치된 패키지를 출력하지 말기
--user 사용자 사이트에 설치된 출력 패키지 만
--path <path> 패키지 나열을 위해 지정된 설치 경로로 제한 (여러 번 사용할 수 있음)
--all 출력에서 다음 패키지를 건너 뛰지 말기 : pip, deploy, wheel, setuptools
--exclude-editable 출력에서 편집 가능한 패키지를 제외
--exclude <package> 출력에서 지정된 패키지 제외

출처 : https://pip.pypa.io/en/stable/cli/pip_freeze/

 

pip freeze - pip documentation v21.1.2

Previous pip list

pip.pypa.io

 

Comments