Je suis en train d'écrire (ce que je pensais serait) un simple script bash:
- exécuter virtualenv pour créer un nouvel environnement à $1
- activer l'environnement virtuel
- faire plus de choses (installer django, ajouter django-admin.py pour le virtualenv du chemin d'accès, etc.)
Étape 1 fonctionne très bien, mais je n'arrive pas à activer le virtualenv. Pour ceux qui ne connaissent pas virtualenv, il crée un activate
le fichier qui active l'environnement virtuel. À partir de la CLI, de l'exécuter à l'aide de source
source $env_name/bin/activate
Où $env_name, évidemment, est le nom de la dir que le virtuel env est installé.
Dans mon script, après la création de l'environnement virtuel, je stocke le chemin d'accès pour activer le script comme ceci:
activate="`pwd`/$ENV_NAME/bin/activate"
Mais quand je l'appelle source "$activate"
, j'obtiens ceci:
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
Je sais qu' $activate
contient le chemin d'accès correct pour activer le script, en fait j'ai même vérifier qu'un fichier est là avant que j'appelle source
. Mais source
lui-même n'arrive pas à trouver. J'ai aussi essayé de l'exécution de toutes les étapes manuellement dans l'interface CLI, où tout fonctionne très bien.
Dans mes recherches j'ai trouvé ce script, qui est similaire à ce que je veux, mais c'est faire beaucoup d'autres choses que je n'ai pas besoin, comme le stockage de tous les environnements virtuels dans un ~/.virtualenv répertoire (ou tout ce qui est dans $WORKON_HOME). Mais il me semble qu'il est de créer le chemin de activate
, et en appelant source "$activate"
en gros de la même manière que je suis.
Voici le script dans son intégralité:
#!/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
AVERTISSEMENT: Mon script bash-fu est assez faible. Je suis assez à l'aise à la CLI, mais il pourrait bien y avoir quelques très stupide raison, ce n'est pas de travail.