(Ne olacağını düşündüm) olacak basit bir bash komut dosyası yazmaya çalışıyorum:
- $ 1 yeni bir ortam oluşturmak için virtualenv çalıştırın
- sanal ortamı etkinleştir
- daha fazla şey yapın (django'yu yükleyin, sanalenv yoluna django-admin.py ekleyin, vb.)
Adım 1 oldukça iyi çalışıyor, ancak virtualenv'i etkinleştiremiyorum. Virtualenv'e aşina olmayanlar için activate, sanal ortamı aktive eden bir dosya oluşturur . CLI'den şunu kullanarak çalıştırırsınız:source
source $env_name/bin/activate
Burada $ env_name, sanal env'nin kurulu olduğu dir adıdır.
Komut dosyamda, sanal ortamı oluşturduktan sonra, etkinleştirme komut dosyasının yolunu şu şekilde saklıyorum:
activate="`pwd`/$ENV_NAME/bin/activate"
Ama aradığımda şunu source "$activate"alıyorum:
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
Ben $activateetkinleştirmek komut dosyası için doğru yolu içerir biliyorum, aslında ben bile aramadan önce bir dosya olduğunu test source. Ama sourcekendisi bulamıyor gibi görünüyor. Ayrıca, her şeyin düzgün çalıştığı tüm adımları CLI'de manuel olarak çalıştırmayı denedim.
Benim araştırmada Ben buldum bu senaryoyu ne istiyorum benzer değil, aynı zamanda ~ / .virtualenv dizinde sanal ortamlarda saklandığı gibi, ben gerekmez diğer bir çok şey yapıyor (ya da her neyse edilir $ WORKON_HOME). Ama bana öyle geliyor ki, onun yolunu yaratıyor ve benimle aynı şekilde activateçağırıyor source "$activate".
İşte betiğin tamamı:
#!/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
YASAL UYARI: Benim bash script-fu oldukça zayıf. CLI'da oldukça rahatım, ancak bunun işe yaramamasının son derece aptalca bir nedeni olabilir.