2014-04-03 10 views
8

Używam aktywacji autoenv dla automatycznej virtualenv. top folderu Python projektu ma .env plik o następującej treściautoenv wykonuje się nawet w podfolderze

source venv/bin/activate 

Ta komenda wykonana ilekroć cd do dowolnego podkatalogu projektu. Następnie rzuca

-bash: venv/bin/activate: No such file or directory 

Nie udało się, ponieważ próbuje wykonać activate stosunku do podkatalogu. Dlaczego jest wykonywany nawet w podfolderze? Jak rozwiązać problem?

Odpowiedz

6

Miałem ten problem dzisiaj. Obecna odpowiedź nie uwzględnia faktu, że środowisko jest aktywowane za każdym razem, gdy podłączysz się do podfolderu lub z powrotem do folderu głównego. Rozwiązać go z poniższej .env skryptu:

venv=venv 
currentvenv="" 

if [[ $VIRTUAL_ENV != "" ]] 
then 
    # Strip out the path and just leave the env name 
    currentvenv="${VIRTUAL_ENV##*/}" 
fi 

if [[ "$currentvenv" != "$venv" ]] 
then 
    echo "Switching to environment: $venv" 
    workon $venv 
#else 
# echo "Already on environment $venv" 
fi 

Wymień venv z nazwą danego środowiska. Możesz odkomentować blok else, aby zobaczyć, że nie próbuje aktywować środowiska za każdym razem, biorąc pod uwagę, że pożądane środowisko jest już aktywowane.

Uwaga: Jeśli nie używasz virtualenvwrapper, powinieneś zamienić komendę workon za pomocą dowolnego polecenia, które aktywujesz w środowisku wirtualnym. Polecam jednak używanie virtualenvwrapper.

0

W katalogu głównym do pracy, .env zawierające:

test (command -v deactivate) && deactivate 

aw każdym z odpowiednich folderach projektowych:

workon venv_of_project 

Jak this person points out, to znaczy, że cd ing wokół w projekcie będzie włączyć obszar roboczy włączony i wyłączony, ale przynajmniej jest to proste i bardzo jasne, co się dzieje.

Powiązane problemy