TIL

[TIL] 230317 협업을 위한 가상환경 설정법( venv 관리)

생각하는 코댕이 2023. 3. 19. 00:22
728x90

[TIL학습목표]

  • 협업시 공유해야하는 가상환경설정법을 이해한다.
  • 사용되는 명령어를 안다.
  • 가상환경을 세팅하고 깃 허브에 공유할 수 있다.

1.문제점

Github사용에 있어 팀원이 push를 먼저 한 후, 뒤에 내가 push를 시도했더니 pull과정이 선행되어야한다는 알림이 나왔다.

파일을 git이 아닌 slack으로 주고 받는 과정에서, github의 버전보다 나의 프로젝트가 최신 버전이 되어버린 상황.

pull이 선행된다면, 구버전을 최신버전에 받아 파일이 망가지는 상황이 되어버린다.

즉, 외부로 파일을 주고받는 과정에서,  git 버젼 관리에서 문제가 생겼다.  

이 때, 뭣 모르고 pull을 받았더니 파일이 망가졌다.


2.시도해본 것들

▶새 폴더 생성 후 push 재시도

기존에 따로 저장해둔 최신 버전을 새 폴더에 넣어 git에 연결하려 했으나, 되지 않았다...

기존의 github와 commit(버전)이 맞지 않으면 안된다는 알림이 나왔다.

 

▶새로운 레파지토리 생성

결국 레파지토리를 새로 만들어 업로드를 하였다.

그리고 추가로 매니저님께 .gitignore 와 requirements.txt 를 이용한 협업용 가상환경 설정법을 배웠다.


▶협업에서의 가상환경(venv) 

● venv = virtual environment(가상환경) : 패키지 담아두는 곳
● pip = python install package : 패키지를 다운 받는 스토어 개념

먼저 알아야하는 개념은 가상환경(venv)은 파일을 준다고 해서 적용이 되는 것이 아니고, 각자 사용자마다 가상환경(venv)을 구축해줘야한다는 것이다.

즉, 프로젝트를 공유하더라도 각자 pip install 과정이 필요하다는 것이다.

 

그렇다면 여기서 두 가지 의문이 든다.

  1. 아니?! 그럼 안 쓰는 걸(venv) 줄 필요 없잖아? 업로딩타임만 길어지고! 그렇다고 push 때마다 빼서 줘?
  2. 필요한 venv를 일일이 기억했다가 줘야해..? pip install도 일일이 해야하고..? 너무 번거롭겠는걸?

그 해결책으로 필요한 것이 다음으로 살펴볼 .gitignore 와 requirements.txt 이다.

  1. .gitignore   :   venv와 관련된 불필요한 파일을 제외하고 github를 활용할 수 있게 해준다.
  2. requirements.txt    :    필요한 venv를 한번에  pip install 할 수 있게 해준다.

 


▶.gitignore

1) gitignore 사이트로 접속해 운영체제, 개발 환경(IDE), 프로그래밍 언어 들을 기입하고 생성버튼을 누른다.

 

https://www.toptal.com/developers/gitignore

2) 코드를 Ctrl + a 로 모두 복사한 뒤, 프로젝트 최상위 폴더 안에 .gitignoer 파일을 만들어 붙여넣고 저장한다.

생성된 맞춤식 gitignore 코드
.gitignore   공유시 무시할 파일들(venv)을 자동으로 분류해준다.

 


▶requirements.txt 

1) git bash로 터미널을 열고 pip list 입력.  현재 프로젝트에서 사용하는 모든 패키지를 보여준다. (생략해도 된다.)

나의 경우는 공유과정에서 불필요한 것들도 추가된 듯하다. 앞으론 관리를 잘하도록 하자.

pip list 명령어를 통해 본 패키지 리스트

2) pip freeze > requirements.txt 입력. pip list를 requirements.txt 라는 파일로 저장해준다.

requirements.txt    필요한 패키지들과 그 버전들을 보여준다.

3) 프로젝트를 전달 받아 가상환경을 셋팅할 때는
cmd (Command Prompt) 터미널을 열고
 python -m venv venv 입력. 가상환경 venv 폴더를 생성한다.

4) venv\Scripts\activate.bat 입력. 가상환경 venv를 활성화 해준다. (비활성화는 venv\Scripts\deactivate.bat )
     .bat은 생략해줘도 무관하다.   +   앞글자를 쓰고 Tab을 눌러 자동완성을 애용하자!

활성화 된 모습. (venv) 가 보인다.

5) pip install -r requirements.txt 입력. requirements.txt 파일 안에 정리된 리스트의 모든 가상환경을 설치한다.

                                                                (삭제는 pip uninstall)

 

이후 github 연결은 따로 다루도록 하겠다. (링크예정)

 


3.해결

새로운 레파지토리 생성

이번엔 급한 관계로 그냥 새 레파지토리 생성이 유리해서 이런 방법을 택했지만,

github 공부를 제대로 한 뒤, 버전관리 중 외부로 파일 교환이 일어났을 경우 어떻게 할 수 있는지 다시 정리해보도록하자.


4.알게 된 점 (Learnd)

불필요한 venv를 제외하고 github로 공유하는 법.

commit(버전)관리를 잘하지 못하면 생기는 불상사.

이래서 튜터님이 collaborators 로 작업하는 것은 권장하지 않는 것이라 하신 것 같다.

빨리 pull requests 와 branch 사용법을 익혀야겠다.

 

 

참고: https://hleecaster.com/python-venv/

 

파이썬 가상환경 venv 사용하기 (패키지 쉽게 관리하기) - 아무튼 워라밸

파이썬에서 venv를 활용한 가상환경 사용법, 폴더 관리, pip 패키지 관리를 최대한 쉽게 정리해보았다.

hleecaster.com

 

728x90