virtualenv 폴더 이름을 바꾸지 않고 이름 바꾸기
폴더를 만들고 virtualenv 인스턴스를 초기화했습니다.
$ mkdir myproject
$ cd myproject
$ virtualenv env
내가 실행 (env)$ pip freeze하면 설치된 패키지가 정상적으로 표시됩니다.
이제로 이름 myproject/을 바꾸고 싶습니다 project/.
$ mv myproject/ project/
그러나 이제 내가 달릴 때
$ . env/bin/activate
(env)$ pip freeze
pip가 설치되지 않았다고 표시됩니다. 환경을 파괴하지 않고 프로젝트 폴더의 이름을 바꾸려면 어떻게해야합니까?
상대 경로를 사용하도록 설치를 조정해야합니다. virtualenv이 --relocatable옵션을 제공합니다 . 에서 워드 프로세서 :
일반적으로 환경은 특정 경로와 연결되어 있습니다. 즉, 환경을 이동하거나 다른 컴퓨터로 복사 할 수 없습니다. 다음 명령으로 환경을 재배치 할 수 있도록 환경을 수정할 수 있습니다.
$ virtualenv-연관 가능한 ENV
참고 : ENV는 가상 환경의 이름이며 ENV 디렉토리 외부에서 실행해야합니다.
이것은 setuptools에 의해 생성 된 파일 중 일부를 만들거나 상대 경로를 사용하고 Python 인터프리터의 위치를 사용하여 환경을 선택하는 대신 activate_this.py를 사용하도록 모든 스크립트를 변경합니다.
참고 : 환경에 패키지를 설치 한 후에는이를 실행해야합니다. 환경을 재배치 할 수있게하고 새 패키지를 설치 한 경우 virtualenv --relocatable을 다시 실행해야합니다.
나는 "왜 아는 것"이 "어떻게 아는 것"보다 중요 하다고 생각 합니다 . 이 문제를 해결하는 또 다른 방법이 있습니다.
를 실행 . env/bin/activate하면 실제로 다음 명령을 실행합니다 ( /tmp예 : 사용 ).
VIRTUAL_ENV="/tmp/myproject/env"
export VIRTUAL_ENV
그러나 방금 이름 myproject을 로 변경 하여 project해당 명령을 실행하지 못했습니다. 이것이 시스템 글로벌 환경에 pip is not installed설치 되지 않았고 pipvirtualenv pip가 올바르게 소스 되지 않았기 때문에 이라고 말하는 이유 입니다.
이 문제를 수동으로 수정하려면 다음과 같이하십시오.
Vim과 같은 자주 사용하는 편집기를 사용하여
/tmp/project/env/bin/activate일반적으로 42 행에서 수정하십시오 .VIRTUAL_ENV='/tmp/myproject/env'=>VIRTUAL_ENV='/tmp/project/env'/tmp/project/env/bin/pip1 행에서 수정하십시오 .#!/tmp/myproject/env/bin/python=>#!/tmp/project/env/bin/python
그런 다음 가상 환경을 env다시 활성화 하면 pip다시 돌아온 것을 볼 수 있습니다.
참고 : @jb로. 이 솔루션은 쉽게 (재) 만들어진 것에 만 적용됩니다 virtualenv. 환경에이 솔루션을 설치하는 데 몇 시간이 걸리는 경우 권장하지 않습니다
Virtualenvs는 쉽게 만들고 전환 할 수 있기 때문에 훌륭합니다. 단일 구성으로 고정되지 않습니다. 프로젝트 요구 사항을 알고 있거나 얻을 수 있는 경우 새로 작성하십시오virtualenv .
requirements.txt파일 만들기(env)$ pip freeze > requirements.txtrequirements.txt파일을 만들 수 없으면env/lib/pythonX.X/site-packages원본을 제거하기 전에 확인하십시오env.
기존 삭제
(env)deactivate && rm -rf env새로 만들기
virtualenv, 활성화 및 설치 요구 사항virtualenv env && . env/bin/activate && pip install -r requirements.txt
또는 virtualenvwrapper를 사용하여 모든 virtualenv가 중앙 위치에 유지되므로 작업이 조금 더 쉽습니다.
$(old-venv) pip freeze > temp-reqs.txt
$(old-venv) deactivate
$ mkvirtualenv new-venv
$(new-venv) pip install -r temp-reqs.txt
$(new-venv) rmvirtualenv old-venv
나는 항상 virtualenvwrapper를 설치하여 도움을줍니다. 쉘 프롬프트에서 :
pip install virtualenvwrapper
virtualenvwrapper 문서에 문서화 된 방법이 있습니다 -cpvirtualenv 이것이 당신이하는 일입니다. 사용자 환경이 아닌지 확인하고 쉘 프롬프트로 돌아가십시오. 필요한 이름으로 이것을 입력하십시오.
cpvirtualenv oldenv newenv
그리고 필요한 경우 :
rmvirtualenv oldenv
당신의 새로운 환경으로 가려면 :
workon newenv
다음 단계에 따라 문제를 해결할 수 있습니다.
- 디렉토리 이름 바꾸기
- 이것을 다시 실행하십시오.
$ virtualenv ..\path\renamed_directory - virtualenv는 패키지를 그대로두고 디렉토리 연결을 수정합니다.
$ scripts/activate$ pip freeze패키지가 제자리에 있는지 확인- virtualenv 디렉토리의 스크립트 파일에 정적 경로 종속성이있는 경우 중요한주의 사항을 수동으로 변경해야합니다.
문제없이 여러 번 나를 위해 일한 또 다른 방법은 virtualenv-clone입니다 .
pip install virtualenv-clone
virtualenv-clone old-dir/env new-dir/env
(프로젝트 폴더 내부)
cd bin
sed -i 's/old_dir_name/new_dir_name/g' *
비활성화 및 활성화를 잊지 마십시오
virtualenv --relocatable ENV is not a desirable solution. I assume most people want the ability to rename a virtualenv without any long-term side effects.
So I've created a simple tool to do just that. The project page for virtualenv-mv outlines it in a bit more detail, but essentially you can use virtualenv-mv just like you'd use a simple implementation of mv (without any options).
For example:
virtualenv-mv myproject project
Please note however that I just hacked this up. It could break under unusual circumstances (e.g. symlinked virtualenvs) so please be careful (back up what you can't afford to lose) and let me know if you encounter any problems.
참고URL : https://stackoverflow.com/questions/6628476/renaming-a-virtualenv-folder-without-breaking-it
'Programming' 카테고리의 다른 글
| CSS를 사용하여 요소 앞에 줄 바꿈을 삽입하는 방법 (0) | 2020.06.05 |
|---|---|
| 모든 테이블 이름을 나열하는 PostgreSQL 쿼리? (0) | 2020.06.05 |
| build.gradle에서 기본적으로 Android Studio는 어떤 제품 맛을 빌드합니까? (0) | 2020.06.05 |
| 상태가 검토 대기중인 2 진 거부 (2 진 거부 단추를 찾을 수 없음) (0) | 2020.06.05 |
| 파이썬 형식 문자열에서 % s는 무엇을 의미합니까? (0) | 2020.06.05 |