[PYTHON] virtualenv에 환경 변수 설정하기
PYTHONvirtualenv에 환경 변수 설정하기
환경 변수를 사용하여 구성을 가져 오는 Heroku 프로젝트가 있지만 먼저 virtualenv를 사용하여 로컬에서 내 응용 프로그램을 테스트합니다.
virtualenv 내에서 원격 컴퓨터에 정의 된 환경 변수를 설정하는 방법이 있습니까?
해결법
-
==============================
1.2017 년 5 월 17 일부터 autoenv의 README에는 direnv가 더 나은 옵션 일 수 있으며 autoenv가 더 이상 유지되지 않음을 의미합니다.
2017 년 5 월 17 일부터 autoenv의 README에는 direnv가 더 나은 옵션 일 수 있으며 autoenv가 더 이상 유지되지 않음을 의미합니다.
나는 정확히 이것을하기 위해 autoenv를 썼다.
https://github.com/kennethreitz/autoenv
-
==============================
2.Virtualenvwrapper (필자는 그렇게하는 것이 좋습니다)를 사용하는 경우 $ VIRTUAL_ENV / bin /에있는 동일한 이름의 스크립트를 사용하여 다른 후크 (사전 활성화, 사후 활성화, 사전 비활성화, 사후 비활성화)를 정의 할 수 있습니다. 사후 활성화 후크가 필요합니다.
Virtualenvwrapper (필자는 그렇게하는 것이 좋습니다)를 사용하는 경우 $ VIRTUAL_ENV / bin /에있는 동일한 이름의 스크립트를 사용하여 다른 후크 (사전 활성화, 사후 활성화, 사전 비활성화, 사후 비활성화)를 정의 할 수 있습니다. 사후 활성화 후크가 필요합니다.
$ workon myvenv $ cat $VIRTUAL_ENV/bin/postactivate #!/bin/bash # This hook is run after this virtualenv is activated. export DJANGO_DEBUG=True export S3_KEY=mykey export S3_SECRET=mysecret $ echo $DJANGO_DEBUG True
이 구성을 프로젝트 디렉토리에 보관하려면 프로젝트 디렉토리에서 $ VIRTUAL_ENV / bin / postactivate로 심볼릭 링크를 만드십시오.
$ rm $VIRTUAL_ENV/bin/postactivate $ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
mkvirtualenv를 사용할 때마다 심볼릭 링크의 생성을 자동화 할 수도 있습니다.
이것 자체는 후에 청소하지 않는다는 것을 기억하십시오. virtualenv를 비활성화하면 환경 변수가 유지됩니다. 대칭 적으로 정리하려면 $ VIRTUAL_ENV / bin / predeactivate에 추가하면됩니다.
$ cat $VIRTUAL_ENV/bin/predeactivate #!/bin/bash # This hook is run before this virtualenv is deactivated. unset DJANGO_DEBUG $ deactivate $ echo $DJANGO_DEBUG
환경 변수를 이미 사용하고있는 환경 변수로 사용한다면, virtualenv를 떠날 때 설정이 완전히 해제된다는 것을 기억하십시오. 그럴 가능성이있는 경우 이전 값을 임시 어딘가에 기록한 다음 다시 비활성화 할 때 읽을 수 있습니다.
설정:
$ cat $VIRTUAL_ENV/bin/postactivate #!/bin/bash # This hook is run after this virtualenv is activated. if [[ -n $SOME_VAR ]] then export SOME_VAR_BACKUP=$SOME_VAR fi export SOME_VAR=apple $ cat $VIRTUAL_ENV/bin/predeactivate #!/bin/bash # This hook is run before this virtualenv is deactivated. if [[ -n $SOME_VAR_BACKUP ]] then export SOME_VAR=$SOME_VAR_BACKUP unset SOME_VAR_BACKUP else unset SOME_VAR fi
테스트:
$ echo $SOME_VAR banana $ workon myenv $ echo $SOME_VAR apple $ deactivate $ echo $SOME_VAR banana
-
==============================
3.너는 시도 할 수 있었다 :
너는 시도 할 수 있었다 :
export ENVVAR=value
virtualenv_root / bin / activate에 있습니다. 기본적으로 정품 인증 스크립트는 virtualenv를 사용하기 시작할 때 실행되는 스크립트이므로 사용자 지정 내용을 모두 저장할 수 있습니다.
-
==============================
4.virtualenv 만 사용하면 (virtualenvwrapper없이) virtualenv를 활성화하기 위해 소싱하는 활성화 스크립트를 통해 환경 변수를 쉽게 설정할 수 있습니다.
virtualenv 만 사용하면 (virtualenvwrapper없이) virtualenv를 활성화하기 위해 소싱하는 활성화 스크립트를 통해 환경 변수를 쉽게 설정할 수 있습니다.
운영:
nano YOUR_ENV/bin/activate
다음과 같이 환경 변수를 파일 끝에 추가하십시오.
export KEY=VALUE
필요하다면 Danilo Bargen이 제안한 위대한 답에서 환경 변수 설정을 해제하기 위해 유사한 훅을 설정할 수도 있습니다.
-
==============================
5.여기에 좋은 답변이 많이 있지만, 두 솔루션 모두 비활성화 할 때 환경 변수 설정을 해제하고 virtualenv 이외의 추가 라이브러리는 필요하지 않음을 알 수있는 솔루션이 게시되지 않았으니 여기 내 솔루션은 편집 / bin / activate, 변수 MY_SERVER_NAME 및 MY_DATABASE_URL을 예로들 수 있습니다.
여기에 좋은 답변이 많이 있지만, 두 솔루션 모두 비활성화 할 때 환경 변수 설정을 해제하고 virtualenv 이외의 추가 라이브러리는 필요하지 않음을 알 수있는 솔루션이 게시되지 않았으니 여기 내 솔루션은 편집 / bin / activate, 변수 MY_SERVER_NAME 및 MY_DATABASE_URL을 예로들 수 있습니다.
activate 스크립트에서 deactivate에 대한 정의가 있어야하며 변수의 끝에서 변수를 설정 해제해야합니다.
deactivate () { ... # Unset My Server's variables unset MY_SERVER_NAME unset MY_DATABASE_URL }
그런 다음 activate 스크립트가 끝날 때 변수를 설정합니다.
# Set My Server's variables export MY_SERVER_NAME="<domain for My Server>" export MY_DATABASE_URL="<url for database>"
이렇게하면 작동시키기 위해 다른 것을 설치할 필요가 없으며 virtualenv를 비활성화 할 때 남아있는 변수로 끝나지 않습니다.
-
==============================
6.로컬에서 virtualenv 내에서 이것을 테스트하는 데 사용할 수있는 두 가지 방법이 있습니다. 첫 번째는 Heroku 공구 벨트 (https://toolbelt.heroku.com/)를 통해 설치되는 도구입니다. 도구는 감독입니다. .env 파일에 로컬로 저장된 모든 환경 변수를 내 보낸 다음 Procfile 내에서 app 프로세스를 실행합니다.
로컬에서 virtualenv 내에서 이것을 테스트하는 데 사용할 수있는 두 가지 방법이 있습니다. 첫 번째는 Heroku 공구 벨트 (https://toolbelt.heroku.com/)를 통해 설치되는 도구입니다. 도구는 감독입니다. .env 파일에 로컬로 저장된 모든 환경 변수를 내 보낸 다음 Procfile 내에서 app 프로세스를 실행합니다.
두 번째 방법은 가벼운 방법을 찾고 있다면 .env 파일을 로컬로 가지고 다음을 실행하는 것입니다.
export $(cat .env)
-
==============================
7.autoenv를 다음 중 하나를 통해 설치하십시오.
autoenv를 다음 중 하나를 통해 설치하십시오.
$ pip install autoenv
(또는)
$ brew install autoenv
그런 다음 virtualenv 프로젝트 폴더에 .env 파일을 만듭니다.
$ echo "source bin/activate" > .env
이제 모든 것이 잘됩니다.
-
==============================
8.django를 위해 설계되었지만 대부분의 설정에서 작동해야하는 또 다른 방법은 django-dotenv를 사용하는 것입니다.
django를 위해 설계되었지만 대부분의 설정에서 작동해야하는 또 다른 방법은 django-dotenv를 사용하는 것입니다.
-
==============================
9.Heroku를 이미 사용하고 있다면 Foreman을 통해 서버를 실행하십시오. 그것은 .env 파일을 지원합니다.이 파일은 KEY = VAL을 가진 행들의 목록으로, 실행되기 전에 앱으로 보내질 것입니다.
Heroku를 이미 사용하고 있다면 Foreman을 통해 서버를 실행하십시오. 그것은 .env 파일을 지원합니다.이 파일은 KEY = VAL을 가진 행들의 목록으로, 실행되기 전에 앱으로 보내질 것입니다.
from https://stackoverflow.com/questions/9554087/setting-an-environment-variable-in-virtualenv by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 장고의 login_required를 만드는 가장 좋은 방법은 기본값입니다. (0) | 2018.10.16 |
---|---|
[PYTHON] 어떻게 여러 제출 버튼 장고 양식을 만들 수 있습니까? (0) | 2018.10.16 |
[PYTHON] 포스트그레스 : 이미 존재하지 않는 INSERT (0) | 2018.10.16 |
[PYTHON] pip 설치가 github에서 작동 할 수 있도록 구성 (0) | 2018.10.16 |
[PYTHON] scikit-learn을 사용하여 여러 카테고리로 분류 (0) | 2018.10.16 |