환경 변수를 가져오지 않고 가상 환경 활성화

환경 변수를 가져오지 않고 가상 환경 활성화

밤새 여러 Python 관리 명령을 실행하는 bash 스크립트를 작성하려고 합니다.

환경 변수를 가져오려면 virtualenv가 필요하다는 다른 게시물을 읽었지만 source명령을 추가한 후에도 여전히 작동하지 않습니다.

#!/bin/bash
source /home/DDiran/.virtualenvs/envname/bin/activate && cd 
/home/DDiran/projectdir/ && python manage.py randomize_product_order && 
python manage.py update_product_prices

문제의 var는 $PRODUCTION_ENV이고 결과는 비어 있습니다(python 발생 KeyError: None).

내가 뭘 잘못했고 왜 그랬나요?

편집하다

@Romeo Ninov의 요청에 따라 내용은 다음과 같습니다 bin/activate.https://pastebin.com/7yAbZxrX

bin/postactivate어떤 설정 후에 즉시 환경 변수가 실행되도록 설정하고 싶습니까 ? bin/activate이것은 일반적으로 virtualenv 활성화가 작동하는 방식입니다.

답변1

추가 조사 끝에 두 가지 다른 솔루션을 찾았습니다. 나중에 비슷한 문제가 발생하는 사람을 위해 여기에 게시하겠습니다.

솔루션 #1

~에 따르면AskUbuntu에 대한 이 기사, 실제 스크립트 자체를 가져와야 하므로 다음을 수행하지 마세요.

bash myscript.sh

다음과 같아야 합니다.

source myscript.sh

왜 이런 일이 발생해야 하는지에 대한 자세한 설명은 위 링크에 있습니다.

솔루션 #2

훨씬 쉽게. 가상 환경을 활성화하고 실행하는 대신:

python manage.py my_command

다음을 실행하면 됩니다:

/path/to/virtual/env/bin/python manage.py my_command

이렇게 하면 가상 환경 활성화에 대해 전혀 걱정할 필요가 없으며 virtualenv에서 설정한 환경 변수가 그대로 유지됩니다.

관련 정보