virtualenv는 어디에서 만들어야합니까?


106

내 가상 환경을 어디에 두어야하는지 혼란 스럽습니다.

첫 번째 django 프로젝트에서 다음 명령으로 프로젝트를 만들었습니다.

django-admin.py startproject djangoproject

그런 다음 djangoproject 디렉토리로 cd'd하고 명령을 실행했습니다.

virtualenv env

내부 djangoproject디렉터리 와 동일한 수준에 가상 환경 디렉터리를 생성했습니다 .

이 특정 프로젝트에 대한 virtualenv를 생성하는 잘못된 장소입니까?

나는 대부분의 사람들이 모든 virtualenv를 완전히 다른 디렉토리 (예 :)에 함께 보관 ~/virtualenvs한 다음 virtualenvwrapper를 사용하여 이들 사이를 전환 한다는 인상을 받고 있습니다.

이를 수행하는 올바른 방법이 있습니까?

답변:


128

많은 사람들이 virtualenvwrapper 도구를 사용합니다.이 도구는 모든 virtualenv를 동일한 위치 ( ~/.virtualenvs디렉토리)에 보관하고 여기에서 만들고 유지하기위한 바로 가기를 허용합니다. 예를 들어 다음을 수행 할 수 있습니다.

mkvirtualenv djangoproject

그리고 나중에 :

workon djangoproject

virtualenv 디렉토리를 배포하고 싶지 않기 때문에 프로젝트 자체에 유지하는 것은 좋지 않을 수 있습니다 (컴퓨터 또는 운영 체제에 따라 다를 수 있음). 대신 pip를 사용하여 requirements.txt 파일을 유지하세요 .

pip freeze > requirements.txt

배포합니다. 이렇게하면 프로젝트를 사용하는 다른 사용자가 다음을 사용하여 모든 동일한 요구 사항을 virtualenv에 다시 설치할 수 있습니다.

pip install -r requirements.txt

좋은 나는 이제까지 핍 물건으로 보았다 hadnt 한하지만 난 언젠가해야하는 경우 유용하게 사용할 것
Joran 비즐리

pip는 Django 커뮤니티에서 매우 인기가 있으며 사용하기 매우 쉽습니다.
David Robinson

고마워, 데이비드, 그게 내가 생각했던 것 같은데. 나는 요구 사항에 대해 알고 있었고 그것을하고 있습니다. 나는 Venv가 어디로 가야할지 확신하지 못했습니다. OS 특정에 대한 귀하의 의견은 귀하가 제안한 것을 수행하는 데 대한 좋은 근거입니다.
Ray

가상 환경을 만든 후 이동할 수 있습니까? 나는 무의식적으로 그것을 내 프로젝트 디렉토리 안에 넣었다
James

6
큰 정당화 IMO가 아닙니다. .gitignore의 목적이 아닌가요?
Josh Noe

24

virtualenv 디렉토리의 위치를 ​​변경하면 손상됨

이것은 디렉토리를 저장소 트리 외부에 두는 한 가지 장점입니다 . 예를 들어 ~/.virtualenvswith virutalenvwrapper.

그렇지 않고 프로젝트 트리에 보관하면 프로젝트 위치를 이동하면 virtualenv가 중단됩니다.

참조 : virtualenv 폴더를 중단하지 않고 이름 바꾸기

--relocatable있지만 완벽하지 알려져있다.

또 다른 사소한 이점 : 그럴 필요가 없습니다 .gitignore.

프로젝트 트리 자체에 gitignored를 넣으면 다음과 같은 이점이 있습니다.

  • 관련 자료를 서로 가깝게 유지합니다.
  • 주어진 virtualenv를 프로젝트 전체에서 재사용하지 않을 가능성이 높으므로 다른 곳에두면 큰 이점이 없습니다.

3
이것은 프로젝트 트리 외부에서 virtualenv 폴더를 만드는 데 대해 본 유일한 합리적인 주장입니다! 다른 가이드는 가상 환경이 근본적으로 손상되어 (매우 유용 하긴하지만!) 불행한 타협 대신 본질적으로 모범 사례 인 것처럼 '중앙화'교리를 반복하는 것처럼 보입니다.
rob3c

명확하지 않은 점이 있습니다. 프로젝트 트리에서 생성 한 다음 "gitignoring"또는 ~ / .virtualenvs에서 생성하는 것이 좋습니다. "그게 아니었다면"은 무엇을 의미합니까?
aderchox

1
@aderchox에는 트레이드 오프가 있습니다. 프로젝트 트리에 넣으면 트리를 다시 설치하거나 ~에 넣어야하지만 프로젝트 외부의 추가 하위 디렉터리에서 관리해야합니다.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功


0

당신이 사용하는 경우 pyenv install Python, 다음 pyenv-VIRTUALENV는 가장 좋은 방법이 될 것입니다. .python-version파일을 설정 하면 작업 폴더 변경시 가상 환경을 자동으로 활성화하거나 비활성화 할 수 있습니다. Pyenv-virtualenv또한 모든 가상 환경을 $HOME/.pyenv/versions폴더에 넣습니다 .


0

개인적인 경험으로 볼 때 모든 가상 환경을 단일 디렉토리에 구성하는 것이 좋습니다. 누군가 매우 예리한 메모리를 가지고 있고 파일 시스템에 흩어져있는 파일 / 폴더를 기억할 수없는 경우. 가상 환경을 관리하기 위해 다른 도구를 사용하는 것을 좋아하지 않습니다. VSCode에서 python.venvPath모든 가상 환경을 포함하는 디렉토리를 구성 ( )하면 자동으로 모든 환경을 인식 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.