oi, pessoal!
estou com problema em uma etapa do treinamento "Scripting: automação de tarefas com Python e criação de Pipelines no Jenkins".
o script para automatizar o ambiente virtual e instalar as dependencias do projeto git, nao esta executando como esperado.
o script esta assim:
import os # fornece a interacao com sistema operacional, permite realizar tarefas como, manipulacao de arquivos e diretorios, acesso a informacao do sistema e execucao de comandos do sistema.
import subprocess # permite a execucao de outros programas a partir do seu script Python. Util para automatizar tarefas, interagir com outros programas e gerenciar processos.
import sys # fornece acesso a algumas variáveis e funções que descrevem o ambiente do interpretador Python, como argumentos de linha de comando, caminhos, saida padrao e de erro e sair do interpretador
def criar_ambiente_virtual(diretorio_projeto):
if not os.path.exists(diretorio_projeto): # verificar se o caminho e valido
print(f"O diretorio {diretorio_projeto} nao existe") # retorno ao usuario informando que diretorio nao existe
return
venv_path = os.path.join(diretorio_projeto, "venv") # une o caminho do diretorio do projeto e o diretorio do ambiente virtual
if os.path.exists(venv_path): # verifica se a variavel venv_path ja tem o ambiente virtual criado
print("O ambiente virtual ja existe") # retorno ao usuario que a criacao do ambiente virtual nao foi concluida, porque ela ja existe
return
try: # tentativa de criacao de ambiente
subprocess.run(["virtualenv", venv_path], check=True) # executa o comando "virtualenv" junto com a variavel venv_path para criar ambiente virtual
print("Ambiente virtual criado com exito") # caso a criacao seja criado com exito, retornara a mensagem ao usuario
except subprocess.CalledProcessError as e: # indica para usuario que ocorreu erro e mostrar o(s) possivel(is) erro(s):
print(f"Erro ao criar o ambiente virtual: {e}") # retornando ao usuario sobre o erro, identificando com o {e}
def instalar_dependencias(diretorio_projeto, requirements_file):
if not os.path.exists(requirements_file): # verifica se o arquivo requirements.txt existe
print(f"O arquivo '{requirements_file}' não existe.") # retorna ao usuario informando que arquivo nao existe
return
venv_path = os.path.join(diretorio_projeto, "venv", "bin", "activate") # criando variavel com o caminho da ativacao do ambiente virtual
subprocess.run(["source", venv_path], shell=True) # comando para ativar ambiente virtual
try: # tentativa de instalacao das dependencias
subprocess.run(["pip", "install", "-r", requirements_file], check=True)
print("Dependencias instaladas com sucesso.")
except subprocess.CalledProcessError as e: # exibir quais erros ocorreram para reselver
print(f"Erro ao instalar as dependencias: {e}")
def main():
diretorio_projeto = sys.argv[1] # usuario indica o arquivo que vai ser referente ao caminho do projeto criado no ambiente virtual
requirements_file = os.path.join(diretorio_projeto, "requirements.txt") # armazenar arquivo requirements
criar_ambiente_virtual(diretorio_projeto) # funcao para criar o ambiente virtual
instalar_dependencias(diretorio_projeto, requirements_file) # funcao para fazer a instalacao das dependencias do ambiente
# condicional para execucao do script e chama a funcao principal main()
if __name__ == "__main__":
main()
ao executar o comando python3 script_venv.sh /home/ernane/dash/
, tenho o retorno que nao foi encontrado o caminho da ativacao do ambiente virtual /home/ernane/code/dash/venv/bin/activate: 1: source: not found
.
ate recriei o ambiente virtual manualmente, mas tive o mesmo retorno, tambem revisei o script e nao consegui encontrar nenhum trecho que faca ele dar esse problema.
se puderem me ajudar com isso, agradeco.