밤새 여러 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에서 설정한 환경 변수가 그대로 유지됩니다.