code

가상 환경 복제 방법

starcafe 2023. 6. 12. 21:37
반응형

가상 환경 복제 방법

나는 많은 패키지를 가진 기존 가상 환경을 가지고 있지만 오래된 버전의 장고를 가지고 있습니다.

제가 원하는 것은 이 환경을 복제하여 동일한 패키지이지만 최신 버전의 장고를 사용하는 다른 환경을 만드는 입니다.어떻게 해야 하나요?

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

요구 사항 파일을 생성하려면 원래 가상 환경으로 이동하고 다음을 실행합니다.

pip freeze > requirements.txt

이렇게 하면 요구 사항이 생성됩니다.당신을 위한 txt 파일.즐겨찾는 텍스트 편집기에서 해당 파일을 열면 다음과 같은 내용이 표시됩니다.

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

이제 다음과 같은 줄을 편집합니다.Django==x.x말하자면Django==1.3(또는 새 virtualenv에 설치할 버전).

마지막으로 새 가상 환경을 활성화하고 다음을 실행합니다.

pip install -r requirements.txt

그리고 pip은 당신의 요구 사항에 나열된 모든 파이썬 모듈을 자동으로 다운로드하여 설치할 것입니다.지정한 버전에 상관없이 txt 파일!

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

재배치할 수 없는 가상 환경을 복제하기 위한 스크립트입니다.

virtualenvwrapper가상 환경을 복제하는 명령을 제공합니다.

cpvirtualenv ENVNAME [TARGETENVNAME]

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

복제하기venv1로.venv2다음 단계를 수행합니다.

  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/
    

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

conda create --name myclone --clone myenv

복사합니다.myenv라고 하는 새로 생성된 환경에myclone.

다음은 python 가상 환경을 복제하기 위한 명령어입니다.

packs=`source-path/bin/pip freeze` && python3 -m venv <env-name> && target-path/bin/pip install $packs

위 명령에 사용된 규칙:

  • source-path = 복제할 env의 경로입니다. /home/john/envs/oldenv.
  • env-name = 복제된 환경의 이름입니다. myenv예를 들어 경로가 될 수도 있습니다. /home/john/envs/myenv
  • target-path = 복제된 새 환경의 경로입니다. /home/john/envs/<env-name>

사용의 장점 또는 내가 이것을 선호하는 이유

  1. 요구 사항을 생성할 필요가 없습니다.txt 파일.
  2. 복제 프로세스 중에 활성화/비활성화되는 환경이 없습니다.
  3. 실행할 단일 명령(3개의 명령을 한 번에 실행)

경우에 따라 대체할 수 있는 환경을 복제하는 동안 글로벌 패키지를 제외할 수 있습니다.source-path/bin/pip freeze와 함께source-path/bin/pip freeze --local에대해더많은에 대해 자세히 .--local 여기서

pip "venv"를 사용하는 경우.가상 환경을 저장하는 폴더를 복사하여 붙여넣고 복사한 폴더의 bin 폴더에서 파일을 수동으로 변경했습니다.그게 효율적인지는 모르겠지만, 효과가 있어요!

다음과 같이 간단히 말할 수 있습니까?

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

파이프는 작동하지만, 인터넷이 없는 컴퓨터에서는 문제입니다.

저는 이것을 위해 작은 코드를 썼습니다. 그것은 저에게 효과가 있었습니다.다른 사람에게 도움이 될 수도 있기 때문에 여기에 씁니다.

(참고: Windows에서 테스트했습니다)

  1. 프로젝트 폴더 복사
  2. 프로젝트 폴더를 다른 디렉터리에 붙여넣기
  3. 이 코드의 주소 부분을 변경하고 코드를 실행합니다.
import os

# The new address of our script folder
script_folder = r'D:\Python proqrams\pdf_to_excel\venv\Scripts'

# the old address of our venv folder
old_path = rb'C:\Users\AVG-dell\Desktop\pdf_to_excel\venv'

# the new address of our venv folder
new_path = rb"D:\Python proqrams\pdf_to_excel\venv"


def find_replace( folder ):

    names = os.listdir( folder )

    for name in names:
        current_path = os.path.join( folder, name )

        if os.path.isdir( current_path ):
            find_replace( current_path )

        elif os.path.isfile( current_path ) :

            try:
                with open( current_path ,'rb' ) as f:
                    data = f.read()

                if old_path in data:
                    print( current_path )

                    data2 = data.replace( old_path , new_path )

                    with open( current_path , 'wb' ) as f:
                        f.write(data2)


            except:
                pass



find_replace( script_folder )

print('completed')

언급URL : https://stackoverflow.com/questions/7438681/how-to-duplicate-virtualenv

반응형