virtualenv를 복제하는 방법


130

패키지가 많지만 Django의 이전 버전이있는 기존 virtualenv가 있습니다.

내가하고 싶은 것은 이 환경을 복제 하여 정확히 동일한 패키지 이지만 최신 버전의 Django 가있는 다른 환경을 갖는 것 입니다. 어떻게해야합니까?


3
모든 요구 사항을 'requirements.txt'파일로 고정하고 다른 virtualenv를 만들고 pip install requirements.txt를 실행합니다.
Calvin Cheng

복사하려는 가상 환경의 파이썬 버전이 기본 파이썬 환경과 다른 경우 새 환경을 설정 한 후 생성 한 환경 virtualenv -p /path/to/older/venv/bin/python new_venv을 사용할 requirements.txt수 있습니다.pip freeze
GiriB

답변:


183

가장 쉬운 방법은 pip를 사용하여 요구 사항 파일을 생성하는 것입니다. 요구 사항 파일은 기본적으로 설치하려는 모든 파이썬 패키지 (또는 pip에 의해 생성 된 파일의 경우 이미 설치 한) 및 해당 버전을 포함하는 파일입니다.

요구 사항 파일을 생성하려면 원래 virtualenv로 이동하여 다음을 실행하십시오.

pip freeze > requirements.txt

그러면 requirements.txt 파일 이 생성됩니다 . 좋아하는 텍스트 편집기에서 해당 파일을 열면 다음과 같은 내용이 표시됩니다.

Django==1.3
Fabric==1.0.1
etc...

이제 Django==x.x말할 줄 Django==1.3(또는 새 virtualenv에 설치하려는 버전)을 편집하십시오 .

마지막으로 새로운 virtualenv를 활성화 하고 다음을 실행하십시오.

pip install -r requirements.txt

그리고 pip는 requirements.txt 파일에 나열된 모든 Python 모듈 을 지정한 버전 에 따라 자동으로 다운로드하여 설치 합니다!


3
감사합니다! 내가 너무 많은 소음, 혼란과 혼란 페이지를 발견 인터넷 검색을하는 동안 ... 당신의 솔루션은했다 ... 내 하루가 너무 깨끗하고 간단)
dolma33

폴더를 복사 한 다음 다른 컴퓨터에 붙여 넣으면 어떻게됩니까? 작동할까요? 물론 apt-get 의존성이 해결되었다고 가정
하자

내가 지금 알아 낸 것처럼 실제로는 그렇지 않습니다.
horcle_buzz

많은 메시지가 표시 Could not find a version that satisfies the requirement a_package=#.#.#됩니다 쉽게 해결할 수 있습니까? 나는 선을 제거하거나 불평등의 평등을 바꿨다.
세계를 변화 시키십시오

pyenv잘 작동합니다 . 멋진 답변입니다.
레너드

29

또 다른 옵션은 virtualenv-clone패키지 를 사용하는 것입니다 .

재배치 할 수없는 virtualenv를 복제하기위한 스크립트입니다.


안녕하세요, WHOLE python 환경을 파일로 복사 할 수 있다고 가정합니다. 그런 다음이 파일을 새 컴퓨터 / OS에로드하면 모든 사이트 패키지가 다시 설치됩니다
aceminer

2
"virtualenv-clone source / target /"은 매우 감사했습니다!
ajankuv 2016 년

virtualenv-clonevirtualenv를 활성화 한 후 설치했는지 확인하십시오
4givN

15

virtualenvwrappervirtualenv를 복제 하는 명령을 제공합니다

cpvirtualenv ENVNAME [TARGETENVNAME]

7
정말 좋은 생각은 아닙니다. "가상 환경 복사는 잘 지원되지 않습니다. 각 virtualenv는 하드 코딩 된 경로 정보를 가지고 있으며, 복사 코드가 특정 파일을 업데이트해야한다는 것을 모르는 경우가 있습니다.주의해서 사용하십시오."
Temak

5

Anaconda 를 사용하는 경우 다음을 실행할 수 있습니다.

conda create --name myclone --clone myenv

myenv라는라는 새로 생성 된 환경으로 복사 됩니다 myclone.


4

가장 쉬운 옵션은 virtualenv-clone패키지를 사용하는 것 입니다.

복제하려면 venv1venv2다음 단계를 수행합니다

  1. 설치 virtualenv-clone중 하나에서 venv1또는 더미 가상 환경 venv_dummy. 만들려면 venv_dummy:

    python -m virtualenv venv_dummy
    source venv_dummy/bin/activate
  2. 설치하려면 virtualenv-clone:

    (venv_dummy): pip install virtualenv-clone
  3. 복제 venv1하려면 venv2:

    (venv_dummy): virtualenv-clone venv1/ venv2/

bash의 프롬프트는 변경되지 않으며, bin / activate를 편집해야하며, 100 % 명확하지 않아야합니다.
MrR

@MrR .. bin/activate이 답변을 따르면 편집 할 필요가 없습니다 . 왜 편집 bin/activate해야합니까?
Safwan

복제 한 후 bash의 프롬프트는 원래 환경 이름을 bin/activate

1

당신은 단순히 할 수 없습니다 :

  • 기존 가상 env 디렉토리를 새 디렉토리로 복사하십시오.
  • 새로운 장고로 업데이트 하시겠습니까?

7
때로는이 방법을 사용하지만 bin / activate 스크립트 내의 일부 경로를 업데이트 해야하는 불편 함이 있습니다.
Armando Pérez Marqués

3
변경 사항이 env 이름에 대한 참조를 찾아서 바꾸는 것입니까, 아니면 그보다 더 복잡합니까?
Greg

1
내 경우에는 단순히 bin / activate에서 VIRTUAL_ENV 상수의 경로를 업데이트하는 것이 트릭을 수행했습니다
bryanph

1
다른 한편으로, bin / activate를 변경하는 것은 꽤 해킹이며, 어느 시점에서 이것이 깨질 수 있는지 궁금해야합니다. 특히 가상 환경이 프로덕션 설정에 사용되는 경우.
Herbert

2
많은 것들을 망칩니다. virtualenv를 다시 생성하거나 복제하는 것이 더 쉽습니다. 나는 (필요한 모든 패키지를 다시 설치하고 처음부터 시작할 수 있도록 프록시 서버가 열리기를 기다리는 동안)이 작업을 시도했지만 작동하지 않습니다! 나는 영리하다고 생각했지만 슬프게도 이것을 시작하고 실행하려면 많은 해킹이 필요하며 솔직히 말하면 훨씬 더 좋은 일이 있습니다.
horcle_buzz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.