반응형
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
이를 기반으로 구성됩니다.
이것은 주제에 대한 매우 좋은 프레젠테이션 입니다. 기본적으로 virtualenv
Ian Bicking이 작성한 것과 동일한 트릭을 사용 하여 직접 작성하는 단계를 설명 합니다.
- 먼저 사용자는 명령을 사용하여 새 virtualenv를 만듭니다
virtualenv myenv
. 그러면 myenv 라는 디렉토리가 생성 되고 시스템 Python 바이너리가 myenv / bin에 복사 됩니다. 또한 bin / activate 의 설정 스크립트 와 모듈 및 패키지 용 lib 하위 디렉토리를 포함하여 다른 필요한 파일과 디렉토리를 myenv에 추가 합니다. - 그런 다음 사용자
. myenv/bin/activate
는 셸의PATH
환경 변수를 myenv / bin 으로 시작하도록 설정 하는 활성화 스크립트를 사용 합니다 . - 이제 사용자
python
가이 셸에서 실행하면 myenv / bin에 저장된 바이너리의 복사본이 실행됩니다 . 바이너리가 / usr / bin / python의 바이너리와 동일하더라도 표준 파이썬 바이너리는 바이너리의 경로와 관련된 디렉토리에서 패키지 및 모듈을 검색하도록 설계되었습니다 (이 기능은 virtualenv와 관련이 없음). ../lib/pythonX.Y 에서 찾습니다. 여기서 X와 Y는 파이썬 바이너리의 주 버전과 부 버전 번호입니다. 이제 myenv / lib / pythonX.Y 에서 찾고 있습니다. - myenv / 빈 디렉토리도라는 이름의 스크립트가 포함되어
pip
사용자가 VIRTUALENV에서 핍을 사용하여 새 패키지를 설치할 때, 그들이에 설치하여 조치 할 수 있도록 myenv / lib 디렉토리 / pythonX.Y을
참조 URL : https://stackoverflow.com/questions/8427709/how-does-virtualenv-work
반응형
'IT이야기' 카테고리의 다른 글
파일 이름에 선행 0을 추가하는 Linux 쉘 스크립트 (0) | 2021.05.03 |
---|---|
단위 테스트를 테스트하는 클래스의 친구로 만드는 것이 잘못된 이유 (0) | 2021.05.03 |
로그인 성공 후 Spring Security가 이전 페이지로 리디렉션 (0) | 2021.05.03 |
패키지 내역을 보는 방법 (0) | 2021.05.03 |
SSL 핸드 셰이크 디버깅 (0) | 2021.05.02 |