다음과 같은 간단한 bash 스크립트를 작성하려고합니다.
- virtualenv를 실행하여 $ 1에 새로운 환경을 만듭니다
- 가상 환경을 활성화
- 더 많은 일을하십시오 (django 설치, django-admin.py를 virtualenv의 경로 등에 추가하십시오)
1 단계는 잘 작동하지만 virtualenv를 활성화 할 수 없습니다. virtualenv에 익숙하지 않은 사용자를 activate
위해 가상 환경을 활성화 하는 파일을 만듭니다 . CLI에서 다음을 사용하여 실행합니다.source
source $env_name/bin/activate
여기서 $ env_name은 가상 env가 설치된 디렉토리의 이름입니다.
내 스크립트에서 가상 환경을 만든 후 다음과 같이 활성화 스크립트의 경로를 저장합니다.
activate="`pwd`/$ENV_NAME/bin/activate"
그러나 전화 source "$activate"
하면 다음과 같이됩니다.
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
$activate
활성화 스크립트의 올바른 경로 가 포함되어 있음을 알고 있습니다. 실제로 전화하기 전에 파일이 있는지 테스트합니다 source
. 그러나 source
그 자체는 그것을 찾을 수없는 것 같습니다. 또한 CLI에서 모든 단계를 수동으로 실행하여 모든 것이 올바르게 작동했습니다.
내 연구 에서이 스크립트를 찾았습니다. 이 스크립트 는 내가 원하는 것과 비슷하지만 모든 가상 환경을 ~ / .virtualenv 디렉토리에 저장하는 것과 같이 필요하지 않은 다른 많은 일을하고 있습니다. $ WORKON_HOME). 그러나 그는 나에게 길을 만들고 기본적으로 같은 방식으로 activate
전화 source "$activate"
하는 것 같습니다.
전체 스크립트는 다음과 같습니다.
#!/bin/sh
PYTHON_PATH=~/bin/python-2.6.1/bin/python
if [ $# = 1 ]
then
ENV_NAME="$1"
virtualenv -p $PYTHON_PATH --no-site-packages $ENV_NAME
activate="`pwd`/$ENV_NAME/bin/activate"
if [ ! -f "$activate" ]
then
echo "ERROR: activate not found at $activate"
return 1
fi
source "$activate"
else
echo 'Usage: djangoenv ENV_NAME'
fi
면책 조항 : 내 bash script-fu는 꽤 약합니다. CLI에 상당히 익숙하지만 이것이 작동하지 않는 매우 어리석은 이유가있을 수 있습니다.