인프런 커뮤니티 질문&답변
설치중인데 venv를 꼭 써야할까요?
작성
·
24
답변 2
0
안녕하세요 조만준님!
가급적이면 venv 로 가상환경을 만들어주는게 좋습니다.
물론 가상환경을 만들면 파이썬 글로벌 환경의 라이브러리들은 인식이 되지 않습니다. 하지만 바로 그런 점 때문에 가상환경을 씁니다. airflow 를 설치하면 굉장히 많은 라이브러리들을 종속성으로 함께 설치하게 되는데 경험적으로 보면 pandas랑 sqlalchemy 버전간 종속성 문제로 문제가 발생하는 경우가 종종 보입니다.
글로벌 환경을 그대로 쓰게 되면 (만약 글로벌 환경에 pandas가 존재할 때) airflow 및 sqlalchemy를 설치하게 되면 종속성 문제가 발생할 가능성이 있습니다.
따라서 가상환경을 만들어주고 그 안에서 airflow 라이브러리들은 설치하게 되면 검증된 버전을 설치하게 됩니다. 따라서 의존성 충돌이 발생할 가능성은 매우 낮아지죠.
이는 Airflow 만의 특징은 아니고 보통 파이썬 프로젝트를 하나 만들 때마다 가상 환경을 하나씩 분리해서 만들어주는 게 일반적입니다.
답변이 되셨을까요?
구성하는 방법에 정답은 없습니다.
조만준님께서 고민하시는 것처럼 가상환경을 함께 쓸지 분리할지는 어느정도 고민이 필요한 부분입니다.
만약 크롤링 모듈이 포함한 etl 자동화 프로젝트라면, 그래서 etl 프로젝트의 서브 모듈로써 크롤링 코드를 작성한다면 하나의 가상환경으로 가도 좋습니다.
그런데 etl 프로젝트용으로 작성된 프로젝트와 CI/CD 환경이 존재하는데 이와 별도의 크롤링 프로젝트를 하나 만든다면 그래서 CI/CD 환경도 분리가 된다면 가상환경도 분리해주는게 좋습니다.
요약하자면
일반적으로는 CI/CD 배포하는 프로젝트 단위로 가상환경을 분리시킵니다.
크롤링 모듈이 etl 프로젝트 서브 모듈로서 존재하면 단일 CI/CD 배포, 단일 가상환경으로 구성
크롤링 모듈이 etl 프로젝트와 별개 성격으로 구성되고 CI/CD 도 별도 구성한다면 가상환경도 별도 구성
이렇게 정리해볼 수 있겠네요.
0
안녕하세요, 인프런 AI 인턴입니다. 조만준님.
venv는 Python의 가상 환경을 생성하여 여러 프로젝트 간에 격리된 패키지 설치를 가능하게 해주는 도구입니다. 이는 서로 다른 프로젝트가 각각의 라이브러리 버전을 필요로 할 때 매우 유용합니다. 예를 들어, 어떤 프로젝트는 pandas의 최신 버전을 필요로 하고, 다른 프로젝트는 이전 버전을 필요로 하는 경우에 유용합니다.
venv를 사용하는 것이 권장되기는 하지만, 사용하는 것이 필수는 아닙니다. 특히, 이전에 설치한 라이브러리를 활용하고 싶으시다면, venv를 사용하지 않고 시스템 전체적으로 설치된 라이브러리를 사용할 수도 있습니다. 단, 이렇게 하면 환경이 복잡해질 수 있고, 라이브러리 충돌이 발생할 수 있다는 점에 유의해야 합니다.
如果你想了解更多关于使用venv和不使用venv的优缺点,你可能会发现以下信息有帮助:
- 不使用venv可能会导致库版本冲突,因为同一环境下的所有项目都共享同一组库和其版本。
- 使用venv可以确保每个项目有一个独立的、与其他项目隔离的环境,这是更建议的方式,因为这可以防止项目间的依赖冲突。
관련하여 유사한 질문 및 답변 링크를 다음과 같이 추천드립니다:
- 파이참에서 외부 파이썬 함수 수행하기 - 이 게시물에서는 실행 환경과 라이브러리 설치에 대한 유용한 정보가 공유되었습니다.
- airflow에 필요 패키지 설치방법 문의 - 필요한 패키지 설치와 관련된 다른 사용자의 경험이 기록되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






그럼 1.venv 만들고 etl자동화 프로젝트를 했다고 하겠습니다.
2. 크롤링 자동화면 또 2.venv 만들어서 운영하는 걸까요?