2013-02-11 6 views
28

upstart non attiverà il mio virtualenv per qualche motivo.perché non è possibile eseguire "source bin/activate"?

Questo è come l'eseguo

script 
    # My startup script, plain old shell scripting here. 
    cd path/to/env 
    source bin/activate 
    .... 
end script 

il virtualenv funziona benissimo quando avviato manualmente

Perché questo non funziona?

+1

È possibile 'upstart' non preservare l'ambiente tra i comandi successivi? Puoi sempre usare '$ VIRTUAL_ENV/bin/python ...' per eseguire direttamente la tua app senza attivare l'ambiente. – millimoose

+0

@millimoose dove $ VIRTUAL_ENV è il percorso per virtualenv? – Calum

+0

Esattamente, 'activate' dovrebbe impostare la stessa variabile in modo che l'ho usata per capire che il nome sarebbe stato familiare. – millimoose

risposta

51

Così Ive ha funzionato fuori, per qualche ragione pretende molto parvenu come l'utilizzo di 'fonte' così ho cambiato la linea da:

source bin/activate 

a

. bin/activate 

e che funziona, non so perché se , quindi sarebbe interessato se qualcuno potesse spiegare questo

+0

Oltre la ragione, l'ho confermato su Ubuntu 12.04. Grazie – dbro

+0

Questo mi sta facendo impazzire. Ti darei cinque voti se potessi. Grazie! – aendrew

+2

La ragione per cui funziona è nella mia risposta separata a questa domanda. –

38

source è un comando incorporato bash ma solo un comando "speciale" posix.

Upstart esegue sh -e durante l'esecuzione delle sezioni di script.

shell sh non capisce source, solo .