코드를 작성하면서 다른 사람들이 미리 만들어둔 코드들을 활용하는 경우가 많다, 그중 몇몇 코드를 활용할때 git clone을 사용하거나 설명서대로 가성환경을 따로 구축하고 사용하라는 경우가 많이 발생한다.
완전 새내기때는 "안되면 다른 코드 쓰면 되지"라고 생각하고 왜 가상환경을 만들어서 쓰는지는 이해가 되지 않았다.
이후 경험이 쌓이면서 가상환경을 왜 만들어야 하는지 나름대로 결론을 지으려고 한다.
Q: 그래서 가상 환경을 왜 만들어야 하는데?
A: 제작자의 의도를 그대로 따르기 위해서
보통 라이브러리라고 하는 것은 코드를 작성할때 좀 더 빠르게 코드를 작성하기 위해 미리 정리해 놓은 함수들의 집합이라고 생각한다.
예를 들어
def sum(a,b): return a+b |
라고 한다면 sum(1,2)를 실행 시 3이 나올 것이다.
위의 함수는 정말 간단한 덧셈 작업을 했을뿐이지만, 실제 코딩을 할때에는 굉장히 복잡한 과정을 압축해놓은 라이브러리들을 자주 사용한다.
예를 들어 "특정 사이트의 DB에 ID와 PW를 입력하여 연결하고,이후로는 다시 ID,PW를 입력 할 필요없이 Token을 유지한다"라는 함수를 짜려고 한다면, API부터 시작해서 DB와 연결하고 ID와 PW를 검증하고 뭔가 복잡한 일들을 진행해야 한다.
그러한 작업을 최소화 하기 위해 라이브러리를 사용하는 것이다.
라이브러리 사용 이유: 시간은 소중하니깐.(인생은 짧다. 당신에겐 Python이 필요하다.)
문제는 이러한 라이브러리들이 동작이 잘되면 상관이 없는데, 2가지 경우로 인해 문제가 발생한다.
1) 함수명,필요한 변수가 변경되었을때,
2) 라이브러리에서 사용하는 다른 라이브러리가 죽었을때,
사실 거의 대부분 라이브러리가 동작하지 않은 이유는 1) 명칭,필요한 변수가 변경되었을 때 이다.
보통 함수명이 변경되는 경우는 거의 없지만 좀 더 세분화된 동작을 구분하기 위해 명칭이 변경되거나,라이브러리 배포자가 변경하는 경우도 종종 발생한다.
변수명도 마찬가지로 필요한 변수가 기존이랑 달라졌거나 하는 경우가 발생한다.
예를 들어 크롤링 라이브러리인 selenium의 경우 html상의 특정 요소를 검색할때의 함수가 아래와 같이 변경되었다.
기존 | 현재 |
find_element_by_css_selector('css_name') | find_element(By.ID, "id") find_element(By.NAME, "name") |
이처럼 라이브러리의 버전이 변경되면 코드를 수정해야 하는 소요가 발생하므로 이를 방지하기 위해 프로그래머가 작성한 코딩환경을 그대로 맞춰주기 위해서 가상환경을 생성한다.
결론 : 굳이 가상환경을 맞출 필요는 없다(많이 힘들어질뿐)
끝.
'프로그래밍 > Python' 카테고리의 다른 글
[셀레니움/selenium]AttributeError: 'str' object has no attribute 'capabilities' error 해결[Solved] (0) | 2023.10.30 |
---|---|
[selenium]log type 'performance' not found[Solve] 해결하기 (0) | 2023.10.17 |
[python,tistory,github actions]매일 구글 트랜드 키워드 Top 10을 사용하여 뉴스글 자동 생성하기 -1(계획) (0) | 2023.10.04 |
[Django]chatgpt와 함께하는 dJango 웹페이지 만들어보기 -1 (0) | 2023.09.22 |
[selenium 셀레니움]카X오 로그인 하기 (0) | 2023.09.15 |