virtualenv를 이동할 수 있습니까?
이 질문은 중복되지 않습니다.
가상 환경의 이름 을 바꾸는 것뿐만 아니라 실제로 다른 사용자의 디렉터리를 포함하여 잠재적으로 다른 디렉터리로 이동 하는 것과 관련이 있습니다.
이것은 단순히 가상 환경의 이름을 바꾸는 것과 같지 않습니다. 특히 virtualenv에 익숙하지 않은 사람들에게 그렇습니다.
virtualenv를 만들고 다른 폴더로 이동해도 여전히 작동합니까?
$ virtualenv -p /usr/bin/python3 /home/me/Env/my-python-venv
$ source Env/my-python-venv/bin/activate
(my-python-venv) $
... 그날 이후 가상 환경이 이동했습니다 ...
(my-python-venv) $ deactivate
$ mkdir -p /home/me/PeskyPartyPEnvs
$ mv /home/me/Env/my-python-venv /home/me/PeskyPartyPEnvs/
질문:
작동할까요?
$ source /home/me/PeskyPartyPEnvs/my-python-venv/bin/activate
(my-python-venv) $ /home/me/PeskyPartyPEnvs/my-python-venv/bin/pip3 install foaas
나는 이것을 시도하는 지혜에 대한 질문이 아니라 (물론 지혜가 유머러스하지 않는 한) 그것이 가능한지에 대해 더 많이 의미합니다. 파이썬 3에서 할 수 있는지, 아니면 그냥 빨아 들여 복제 해야하는지 정말 알고 싶습니다 .
수 나는 단지 슬픔이없는 그런? 나는 슬픔을 피하고 싶다.mv
virtualenv
예. 동일한 플랫폼에서 이동할 수 있습니다. --relocatable
기존 환경에서 사용할 수 있습니다 .
에서 --help
:
--relocatable-기존 virtualenv 환경을 재배치 가능하게 만듭니다. 이것은 스크립트를 수정하고 모든 .pth 파일을 상대적으로 만듭니다.
그러나 이것은 activate
스크립트 를 변경하는 것처럼 보이지 않으며 오히려 pip*
및 easy_install*
스크립트 만 변경합니다 . 에서 activate
스크립트의 $VIRTUAL_ENV
환경 변수는 원본과 하드 코딩 /path/to/original/venv
. $VIRTUAL_ENV
변수 설정하는 데 사용되는 PATH
것이 호출하기 위해 새로운 위치에 따라 변경되어야하므로, 너무중인 환경을 python
하고 pip
등 절대 경로없이.
이 문제를 해결하기 위해 스크립트 $VIRTUAL_ENV
에서 환경 변수를 변경할 수 있습니다 activate
(예 :를 사용하여 sed
).
사용 예 :
$ cd ~/first
$ virtualenv my-venv
$ grep 'VIRTUAL_ENV=' my-venv/bin/activate
VIRTUAL_ENV="/home/username/first/my-venv"
$ virtualenv --relocatable my-venv
Making script my-venv/bin/easy_install relative
Making script my-venv/bin/easy_install-2.7 relative
Making script my-venv/bin/pip relative
Making script my-venv/bin/pip2 relative
Making script my-venv/bin/pip2.7 relative
### Note that `activate` has not been touched
$ mkdir ~/second
$ mv my-venv ~/second
$ cd ~/second
$ grep 'VIRTUAL_ENV=' my-venv/bin/activate
VIRTUAL_ENV=/home/username/first/my-venv
### (This variable hasn't been changed, it still refers to the old, now non-existent directory!)
$ sed -i -e 's|username/first|username/second|' my-venv/bin/activate
## sed can be used to change the path.
## Note that the `-i` (in place) flag won't work on all machines.
$ source my-venv/bin/activate
(my-venv) $ pip install foass
...
(my-venv) $ python
[...]
> import foass
만세, 이제 사물을 설치하고 새로 배치 된 가상 환경에로드 할 수 있습니다.
이 작업을 수행 할 수 있는 --relocatable
인수가 virtualenv
나타납니다.
예, virtualenv의 현재 디렉토리에 의존하는 작업을 수행하지 않은 경우 가능합니다.
그러나 선택할 수있는 경우 가장 좋은 방법은 새 virtualenv를 만들고 대신 새 virtualenv를 사용하는 것입니다. 이것은 가장 안전한 선택이며 나중에 문제를 일으킬 가능성이 가장 적습니다.
문서 에는 다음과 같이 언급되어 있습니다 .
각 virtualenv에는 하드 코딩 된 경로 정보가 있습니다.
예를 들어 실행 setvirtualenvproject
한 경우 실행 한 후 올바른 디렉터리로 전환 할 workon ...
수 없으므로이 경우 수동으로 수정해야합니다.
일반적으로 virtualenv는 필요한 Python 인터프리터 파일과 필요한 패키지가있는 디렉토리에 불과합니다.
그러나 ALAS :
당신은 단순히 할 수 없습니다 mv
. 해결 방법이 있지만 다시 설치하는 것이 더 쉬울 수 있습니다.
(my-python-venv)$ /home/me/PeskyPartyPEnvs/pip3 install foaas
zsh: /home/me/PeskyPartyPEnvs/pip3: bad interpreter: /home/me/Env/my-python-venv/bin/python3: no such file or directory
(my-python-venv)$ deactivate
$
... enter
좌절감이 많이 들며 다음 작품
$
$
$ pip3 search foaas
그것이 아닌 것을 제외하고는 my-python-venv
ergo 슬픔입니다.
원하는 mv
당신 virtualenv
, 그렇지 않으면 수정되지 않은, 그리고 그것을 사용?
짧은 대답:
글쎄, 당신 은 할 수 없습니다 .
참조 URL : https://stackoverflow.com/questions/32407365/can-i-move-a-virtualenv
'program story' 카테고리의 다른 글
Android의 ContentResolver.query ()가 null을 반환하는 원인은 무엇입니까? (0) | 2020.12.31 |
---|---|
Android에서 시스템 앱과 권한있는 앱의 차이점은 무엇입니까? (0) | 2020.12.31 |
va_end는 정확히 무엇입니까? (0) | 2020.12.31 |
이미지가로드 된시기를 감지하는 브라우저 독립적 인 방법 (0) | 2020.12.31 |
PHP에서 finally 블록의 부족을 어떻게 해결할 수 있습니까? (0) | 2020.12.31 |