O script Bash para executar o ambiente virtual python não é executado

2

Estou tentando incluir a seguinte chamada em um script, que executa o ambiente virtual do Python:

[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ source /home/lucas/Dropbox/projects/competitive-programming/kaggle/venv/ipython-notebook/bin/activate                                
(ipython-notebook) [lucas@lucas-ThinkPad-W520]/home/lucas/bin$ deactivate
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ 

Então, criei e executei o seguinte script:

[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ cat venv_python3.sh 
#!/bin/bash
#  /usr/bin/env bash
echo "starting python3 venv"
source /home/lucas/Dropbox/projects/competitiveprogramming/kaggle/venv/ipythonnotebook/bin/activate
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ venv_python3.sh 
starting python3 venv                                                                            
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ 

Como você pode ver, ele executa a chamada echo , mas não inicia meu ambiente virtual. Estou esquecendo de algo?

Eu examinei vários tutoriais, mas não consegui encontrar o que está faltando. Além disso, meu /home/lucas/bin/ , o local do meu script, está no meu $PATH .

Aqui estão as permissões do arquivo:

[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ ls -la
total 52
drwxr-xr-x  3 lucas lucas 4096 Jun 28 23:14 .
drwxr-xr-x 79 lucas lucas 4096 Jun 28 23:13 ..
-rwxrw-r--  1 lucas lucas  164 Jun 28 23:13 venv_python3.sh
    
por modulitos 29.06.2014 / 08:23

1 resposta

4

Na parte superior do script activate , você precisa fornecer a fonte e não pode executá-la diretamente. O que ele faz é alterar algumas coisas na sessão de bash na qual o arquivo é originado.

No seu caso, bash é o bash invocado executando o script venv_python3.sh , não o bash do qual você está digitando interativamente.

O que você poderia fazer é criar uma função bash (ou um alias) que faça o sourcing para você, então o 'sourcing' aconteceria com o seu bash interativo.

No entanto, eu recomendo que você olhe virtualenvwrapper , o que torna o trabalho com vários virtualenvs muito mais fácil e pode resolver o problema ' problema 'para o qual você criou este script em primeiro lugar.

    
por 29.06.2014 / 09:49