|
Python - Ativando Ambiente Virtual (venv) via Script | |
| @CanalQb | ||
Ativar um ambiente virtual no Python é uma prática essencial para manter dependências organizadas e isoladas por projeto. Uma forma comum é utilizar o módulo venv, que cria e gerencia esses ambientes.
Exemplo básico de ativação usando subprocess
Você pode tentar ativar um ambiente virtual localizado na pasta myenv executando o script activate dentro da subpasta bin:
import os
import subprocess
venv_dir = 'myenv'
activate_script = os.path.join(venv_dir, 'bin', 'activate')
subprocess.call(['source', activate_script], shell=True)
Este comando utiliza o shell para executar o comando source e ativar o ambiente virtual. Entretanto, o uso de source pode causar erros no contexto do Python, como o famoso erro "source: not found", pois source é um comando interno do shell e não um programa executável.
Por que o erro "source: not found" ocorre?
Esse erro indica que o comando source não foi reconhecido, o que acontece porque o Python executa o subprocess em um shell diferente, como o sh, que não suporta source (mas sim o comando . para o mesmo propósito).
Alternativa correta para ativar o venv no script Python
Para evitar esse problema, use o comando . (ponto) para ativar o ambiente virtual dentro do shell. Veja o exemplo abaixo:
import os
import subprocess
venv_dir = '/home/ubuntu/knolix/qrodrigob'
activate_script = os.path.join(venv_dir, 'bin', 'activate')
subprocess.call('. ' + activate_script, shell=True)
Esse comando executa o script activate usando o ponto (.), ativando o ambiente virtual corretamente no contexto do shell usado pelo subprocess.
Considerações importantes sobre ativação via script
- O comando
subprocess.callcomshell=Trueexecuta em um processo separado; portanto, a ativação do ambiente virtual afetará apenas esse subprocesso, e não o processo Python pai que chamou o script. - Se você deseja que o ambiente virtual afete o processo Python atual, é recomendável iniciar seu script diretamente com o interpretador do ambiente virtual ou modificar o PATH e variáveis de ambiente via código.
- Evite passar caminhos recebidos de usuários diretamente no
shell=Truepara evitar riscos de injeção de comandos maliciosos.
Como criar um ambiente virtual com o módulo venv
Se ainda não criou o ambiente virtual, você pode fazer isso facilmente no terminal ou dentro do Python:
python3 -m venv myenv
# Ou via Python
import venv
venv.create('myenv', with_pip=True)
Após criar, o ambiente estará disponível na pasta especificada, e o script activate poderá ser usado para ativá-lo manualmente ou via script conforme mostrado.
Referências oficiais e adicionais
- Documentação oficial do módulo venv
- Documentação oficial do módulo subprocess
- Discussão Stack Overflow sobre ativação de virtualenv via script
Conclusão
Ativar um ambiente virtual Python através de um script requer atenção ao uso correto dos comandos do shell e à segurança. A ativação via subprocess é útil para subprocessos, mas para que o ambiente virtual afete o script principal, o ideal é iniciar o script diretamente com o interpretador do ambiente virtual.

Comentários
Comente só assim vamos crescer juntos!