IT이야기

virtualenv는 어떻게 작동합니까?

cyworld 2021. 5. 3. 21:51
반응형

virtualenv는 어떻게 작동합니까?


활성화 스크립트를 확인한 결과 다음과 같이 표시 됩니다 .

  • VIRTUAL_ENV 환경 설정
  • PATH 앞에 $ VIRTUAL_ENV / bin 추가

virtualenv이 마법의 가상 환경을 어떻게 제공합니까? 내가 뭘 그리워?


@jcollado와 연결된 프레젠테이션에서 배운 기본 프로세스에 대해 설명하겠습니다.

Python이 시작되면 바이너리 경로와 접두사를 확인합니다.

따라서 virtualenv가 /home/blah/scratch. 파이썬 프로세스는 그것이 /home/blah/scratch/bin/python(보통 여러분의 시스템 python 바이너리의 복사본 일 뿐인) 실행되었다는 /usr/bin/python것을 알고 있으며 X.Y컴파일되기 때문에 자체 버전을 알고 있습니다. 그런 다음 Python은 다음 lib/pythonX.Y/os.py순서로 찾습니다 .

/home/blah/scratch/bin/lib/pythonX.Y/os.py
/home/blah/scratch/lib/pythonX.Y/os.py    <-- this file should exist
/home/blah/lib/pythonX.Y/os.py
/home/lib/pythonX.Y/os.py
/lib/pythonX.Y/os.py

/home/blah/scratch/lib/pythonX.Y/os.py실제로 존재하는 첫 번째 파일이기 때문에 멈 춥니 다 . 그렇지 않은 경우 Python은 계속 검색합니다. 그런 다음이를 sys.prefix기반으로 설정 합니다. 유사한 프로세스를 사용하여를 설정 sys.exec_prefix한 다음 sys.path이를 기반으로 구성됩니다.


이것은 주제에 대한 매우 좋은 프레젠테이션 입니다. 기본적으로 virtualenvIan Bicking이 작성한 것과 동일한 트릭을 사용 하여 직접 작성하는 단계를 설명 합니다.


  1. 먼저 사용자는 명령을 사용하여 새 virtualenv를 만듭니다 virtualenv myenv. 그러면 myenv 라는 디렉토리가 생성 되고 시스템 Python 바이너리가 myenv / bin에 복사 됩니다. 또한 bin / activate 의 설정 스크립트 모듈 및 패키지 용 lib 하위 디렉토리를 포함하여 다른 필요한 파일과 디렉토리를 myenv에 추가 합니다.
  2. 그런 다음 사용자 . myenv/bin/activate는 셸의 PATH환경 변수를 myenv / bin 으로 시작하도록 설정 하는 활성화 스크립트를 사용 합니다 .
  3. 이제 사용자 python가이 셸에서 실행하면 myenv / bin에 저장된 바이너리의 복사본이 실행됩니다 . 바이너리가 / usr / bin / python의 바이너리와 동일하더라도 표준 파이썬 바이너리는 바이너리의 경로와 관련된 디렉토리에서 패키지 및 모듈을 검색하도록 설계되었습니다 (이 기능은 virtualenv와 관련이 없음). ../lib/pythonX.Y 에서 찾습니다. 여기서 X와 Y는 파이썬 바이너리의 주 버전과 부 버전 번호입니다. 이제 myenv / lib / pythonX.Y 에서 찾고 있습니다.
  4. myenv / 빈 디렉토리도라는 이름의 스크립트가 포함되어 pip사용자가 VIRTUALENV에서 핍을 사용하여 새 패키지를 설치할 때, 그들이에 설치하여 조치 할 수 있도록 myenv / lib 디렉토리 / pythonX.Y을

참조 URL : https://stackoverflow.com/questions/8427709/how-does-virtualenv-work

반응형