요구 사항을 사용자 지정하는 방법.여러 환경을 위한 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
'programing' 카테고리의 다른 글
SQL 구문에 오류가 있습니다(MySQLi SQL 예외가 발견되지 않음).다른 답변을 시도했지만 실패했습니다. (0) | 2023.06.21 |
---|---|
기존 프로젝트에 ASP.NET MVC5 ID 인증 추가 (0) | 2023.06.21 |
컴파일러에서 함수 이름 앞에 밑줄이 붙는 이유는 무엇입니까? (0) | 2023.06.21 |
UTL_FILE.FOPEN() 프로시저가 디렉터리 경로를 수락하지 않습니까? (0) | 2023.06.21 |
Angular 2의 AoT 컴파일러용 롤업 사용 및 Moment.js 가져오기 (0) | 2023.06.21 |