가상환경 생성 > 가상환경 활성화 > 패키지 설치 > 설치된 의존성 목록 저장
1. 가상환경 생성
python -m venv 가상환경이름
python 가상환경 생성
2. 가상환경 활성화(macOS)
source 가상환경이름/bin/activate
conda로 가상환경 관리를 안해주면 내가 가상환경폴더관리 다 해줘야하고 'conda activate 가상환경이름'에 비해서 활성화 명령이 매우 귀찮.. 근데 어쩐지 anaconda에 의존하기 싫어서 독립적으로 만들어줌
3. 필요한 패키지 설치
pip install django==4.2
pip install 패키지이름==버전
이 과정에서 해당 패키지가 의존하는 다른 라이브러리도 자동으로 설치됨
4. 설치된 의존성 목록 저장
pip freeze > requirements.txt
현재 가상환경에 설치된 모든 패키지와 버전을 requirements.txt파일로 저장
pip list
Package Version
-------- -------
asgiref 3.8.1
Django 4.2
pip 24.2
sqlparse 0.5.3
pip list 보면 이런식으로 나옴
pip install -r requirements.txt
나중에 다른 환경에서 동일한 패키지를 설치
5. 팀 프로젝트에서 누군가 작성한 코드를 실행하려면 동일한 의존성이 필요
git clone https://github.com/example/project.git
cd project
pip install -r requirements.txt
팀원이 프로젝트를 클론한 후 requirements.txt를 사용해서 의존성을 설치
💡
프로젝트 의존성을 기록 및 공유
동일한 환경을 설정
서버 환경을 개발 환경과 동일하게 유지
환경을 재현 가능하게 설정
개발자들은 다양한 사용자 환경을 지원하기 위해서는 다양한 환경에서 개발해야하는거 아닌가?
왜 굳이 개발단계가 아닌 테스트단계에서 다양한 환경을 테스트하지?
개발단계부터 하면 되잖아.라는 의문이 생김
1. 의문의 핵심
내가 이해한 상황:
• 개발자들은 보통 동일한 개발 환경(Python 버전, 운영체제 등)을 공유하며 작업
• 그런데 사용자들은 매우 다양한 환경(다른 OS, Python 버전 등)을 가지고 있음
의문: 이렇게 개발자들이 동일한 환경에서만 작업하면, 다양한 사용자 환경에 맞출 수 없지 않을까?
2. 의문에 대한 답
A. 왜 개발자들은 동일한 환경에서 작업할까?
협업과 일관성:
• 팀 내에서 동일한 환경을 사용해야, 코드가 서로 다른 환경에서 깨지는 문제를 방지하고 효율적으로 작업가능
• 이를 위해 가상환경(venv)이나 의존성 관리 파일(requirements.txt)을 사용
효율적인 개발 리소스 사용:
• 다양한 환경에서 개발하려면 리소스가 많이 필요하므로, 먼저 표준화된 주요 환경에서 개발하는 것이 합리적
B. 다양한 사용자 환경은 어떻게 지원할까?
테스트 환경의 다양화:
• 개발 환경은 표준화하되, 사용자 환경을 반영한 다양한 테스트 환경(운영체제, Python 버전 등)을 설정
테스트 자동화 도구 사용:
• CI/CD를 통해 여러 환경에서 테스트를 실행함으로써 사용자 환경에서의 호환성을 확보
피드백 기반 확장:
• 먼저 주요 환경에서 서비스를 출시한 후, 사용자 피드백을 통해 점진적으로 특수한 환경을 지원
3. 정리된 의문의 해결점
1. 개발자는 왜 동일한 환경을 사용하는가?
• 효율성: 동일한 환경에서 작업하면 팀 간 협업과 코드의 일관성을 유지할 수 있음
• 표준화: 가상환경과 requirements.txt로 표준 개발 환경을 공유
2. 그럼 어떻게 다양한 사용자 환경에 대응하는가?
• 다양한 테스트 환경을 설정해, 주요 환경부터 특수한 환경까지 점진적으로 지원
• 사용자 피드백을 받아, 실제로 필요한 환경에 리소스를 집중
3. 결론적으로 왜 이것이 합리적인가?
• 모든 환경을 처음부터 지원하려는 시도는 비효율적이며, 리소스 낭비가 크기 때문
• 대신 주요 환경부터 완벽히 지원하고, 특수 환경으로 점진적으로 확장하면, 서비스 품질을 유지하면서 더 많은 사용자 요구를 충족할 수 있음
4. 이해하기 쉽게 비유
• 개발 환경 표준화:
• “개발자들은 같은 운동장을 사용해 축구를 연습한다.”
• 이 운동장은 표준화된 환경이고, 여기서 잘 훈련된 코드가 만들어짐
• 다양한 사용자 환경 테스트:
• “하지만 경기는 다양한 도시에서 열린다.”
• 경기가 열리는 환경(운동장)은 사용자 환경을 뜻함
• 축구팀은 테스트를 통해 다른 도시의 운동장(사용자 환경)에서도 경기할 수 있도록 준비
• 점진적 확장:
• “먼저 주요 도시에서 경기를 하고, 이후 필요에 따라 더 많은 도시로 경기를 확장한다.”
• 초기에는 주요 환경(다수가 사용하는 환경)을 중심으로 작업
• 이후 피드백을 통해 특수한 환경으로 지원을 늘려감
5. 결론
“같은 조건에서 시작하되, 더 다양한 환경으로 나아가는 전략”이 합리적
'∟Framework > ∟Django' 카테고리의 다른 글
Django - App (0) | 2025.01.06 |
---|---|
Django - 프로젝트 (2) | 2025.01.03 |
Django (6) | 2024.12.30 |