programing

요구 사항을 사용자 지정하는 방법.여러 환경을 위한 txt?

skycolor 2023. 6. 21. 22:28
반응형

요구 사항을 사용자 지정하는 방법.여러 환경을 위한 txt?

저는 개발과 생산 두 개의 지점을 가지고 있습니다.각각 종속성이 있으며, 그 중 일부는 다릅니다.개발은 그 자체가 개발 중인 의존성을 가리킵니다.프로덕션에서도 마찬가지입니다.각 지점의 종속성을 'requirements.txt'라는 단일 파일로 예상하는 Heroku에 배포해야 합니다.

정리하는 가장 좋은 방법은 무엇입니까?

제가 생각한 것은:

  • 각 분기에 하나씩 별도의 요구사항 파일을 유지 관리합니다(자주 병합해야 합니다!).
  • Heroku에게 사용할 요구 사항 파일(환경 변수?)을 알려줍니다.
  • 배포 스크립트 쓰기(temp 분기 생성, 요구 사항 파일 수정, 커밋, 배포, temp 분기 삭제)

요구 사항 파일을 캐스케이드하고 "-r" 플래그를 사용하여 pip에 한 파일의 내용을 다른 파일에 포함하도록 지시할 수 있습니다.요구 사항을 다음과 같은 모듈식 폴더 계층으로 나눌 수 있습니다.

`-- django_project_root
|-- requirements
|   |-- common.txt
|   |-- dev.txt
|   `-- prod.txt
`-- requirements.txt

파일의 내용은 다음과 같습니다.

common.txt:

# Contains requirements common to all environments
req1==1.0
req2==1.0
req3==1.0
...

dev.txt:

# Specifies only dev-specific requirements
# But imports the common ones too
-r common.txt
dev_req==1.0
...

prod.txt:

# Same for prod...
-r common.txt
prod_req==1.0
...

Heroku 외부에서는 이제 다음과 같은 환경을 설정할 수 있습니다.

pip install -r requirements/dev.txt

또는

pip install -r requirements/prod.txt

Heroku는 특히 프로젝트 루트에서 "requirements.txt"를 찾기 때문에 다음과 같이 prod를 미러링해야 합니다.

요구 사항들.txt:

# Mirrors prod
-r requirements/prod.txt

원래 질문과 답변이 게시되었을 때 존재하지 않았던 오늘날의 실행 가능한 옵션은 종속성을 관리하기 위해 pip 대신 pipenv를 사용하는 것입니다.

pipenv를 사용하면 pip과 같이 두 개의 개별 요구 사항 파일을 수동으로 관리할 필요가 없어지며, 대신 pipenv는 명령줄에서 상호 작용을 통해 개발 및 프로덕션 패키지 자체를 관리합니다.

프로덕션 및 개발 모두에서 사용할 패키지를 설치하려면 다음과 같이 하십시오.

pipenv install <package>

개발 환경 전용 패키지를 설치하려면 다음과 같이 하십시오.

pipenv install <package> --dev

이러한 명령을 통해 pipenv는 두 개의 파일(Pipfile 및 Pipfile.lock)에 환경 구성을 저장하고 관리합니다.Heroku의 현재 Python 빌드 팩은 기본적으로 pipenv를 지원하며 요구 사항이 아닌 Pipfile.lock에서 자체 구성합니다.txt의

도구에 대한 전체 설명서는 pipenv 링크를 참조하십시오.

동일한 시스템의 환경 간에 전환할 수 있어야 하는 경우 전환해야 하는 각 환경에 대해 서로 다른 가상 환경 폴더를 생성해야 할 수 있습니다.

python3 -m venv venv_dev
source venv_dev/bin/activate
pip install -r pip/common.txt
pip install -r pip/dev.txt
exit
python3 -m venv venv_prod
source venv_prod/bin/activate
pip install -r pip/common.txt
exit
source venv_dev/bin/activate
# now we are in dev environment so your code editor and build systems will work.

# let's install a new dev package:
# pip install awesome
# pip freeze -r pip/temp.txt
# find that package, put it into pip/dev.txt
# rm pip/temp.txt

# pretty cumbersome, but it works. 

언급URL : https://stackoverflow.com/questions/17803829/how-to-customize-a-requirements-txt-for-multiple-environments

반응형