Agora, você pode executar scripts Python apenas com Java e Gradle Builds.
Este plug -in gradle baixa e instala automaticamente a ferramenta CONDA específica para executar scripts Python ou outros executáveis ( pip , conda etc.) do Virtual Env.
A configuração do projeto Python pode ser totalmente automatizada por tarefas gradle agora.
11 ou superior6.2 ou superior projeto Executando scripts ou projetos do Python, executando a tarefa única que baixará e instalará o ambiente virtual do Python.
Configuração adicional do Python (instalação do PIP/PACATES PIPA etc.) pode ser realizada definindo tarefas gradle no arquivo build.gradle.kts .
Aplique um plug -in em um projeto, conforme descrito no portal Gradle.
Configure um plug -in especificando a versão desejada do Python no script de construção:
pythonPlugin {
pythonVersion = " 3.8.2 "
} Defina uma tarefa para executar o script Python desejado, por exemplo, para executar o script quicksort.py no diretor main , adicione a seguinte configuração de tarefa para criar o script:
tasks {
register< VenvTask >( " runQuickSort " ) {
workingDir = projectDir.resolve( " main " )
args = listOf ( " quicksort.py " )
}
}Execute o script python de Gradle:
# Linux
./gradlew runQuickSort
# Windows
gradlew.bat runQuickSortAguarde até que o CONDA seja instalado e o ambiente configurado.
Aproveitar :) 
O comportamento padrão do plug -in pode ser ajustado especificando as seguintes propriedades:
pythonVersion -> Versão do ambiente Python, padrão 3.13.0 , os disponíveis podem ser verificados em https://anaconda.org/conda-forge/python/condaVersion -> Versão Miniconda ou Anaconda, py312_24.9.2-0 , os disponíveis podem ser verificados em https://repo.anaconda.com/miniconda/ ou https://repo.anaconda.com/archive/ (anaconds)condaInstaller -> Nome do instalador do ambiente do conda, o padrão é Miniconda3 , para alteração da Anaconda para Anaconda3condaRepoUrl -> URL do repositório que deve ser usado para baixar binários, padrão https://repo.anaconda.com/miniconda , para anaconda https://repo.anaconda.com/archive/condaRepoUsername -> Nome de usuário para a autenticação básica, se necessário, ausente por padrãocondaRepoPassword -> senha para a autenticação básica, usada se condaRepoUsername for especificado, não deve ser passado diretamente no arquivo de script, pode ser fornecido por propriedades gradle, ausente por padrãocondaRepoHeaders -> cabeçalhos opcionais adicionais usados para conexão, mapa vazio por padrãouseHomeDir -> Quando true o diretório de instalação padrão será o da propriedade user.home System, false por padrãoinstallDir -> Propriedade para personalizar o diretório de instalação do CONDA, é igual a <rootProjectDir>/.gradle/python por padrão ou casa de usuário true useHomeDirsystemArch -> Arquitetura do sistema operacional, o padrão é obtido da propriedade os.arch SystemideaDir -> Diretório de alvo .idea para detectar o projeto Intellij, é igual a <rootProjectDir>/.idea por padrão Configuração de extensão de amostra dentro do arquivo build.gradle.kts :
pythonPlugin {
pythonVersion = " 3.7.0 "
condaVersion = " 2022.05 "
condaInstaller = " Anaconda3 "
condaRepoUrl = " https://nexus.com/repositories/conda "
condaRepoUsername = " user "
condaRepoPassword = extra[ " conda.repo.pass " ].toString()
condaRepoHeaders = mapOf (
" CUSTOM_HEADER_1 " to " headerValue1 " ,
" CUSTOM_HEADER_2 " to " headerValue2 "
)
installDir = file(layout.buildDirectory.dir( " python " ))
systemArch = " arm64 "
}VenvTaskTodas as tarefas que devem ser executadas no Virtual Env também podem ser personalizadas pelos seguintes campos:
venvExec -> Nome do executável da Virtual Env, que será executado, python por padrãoinputFile -> Arquivo de entrada opcional, nenhum por padrãooutputFile -> Arquivo de saída opcional, nenhum por padrãoargs -> Lista de argumentos para um executável venvExec , vazio por padrãoworkingDir -> Diretório de trabalho, diretório de projeto por padrãoenvironment -> Mapa com variáveis de ambiente a serem aplicadas durante a execução, vazias por padrão Exemplo de configuração VenvTask dentro do arquivo build.gradle.kts :
register< VenvTask >( " runPythonScript " ) {
venvExec = " python "
inputFile = file( " inputFile.txt " )
outputFile = file( " outputFile.txt " )
args = listOf ( " --some-flag " , " arg1 " )
workingDir = projectDir.resolve( " main " )
environment = mapOf ( " ENV_VAR_TO_PRINT " to " sampleEnvVar " )
}examples neste projeto. Importação automática instalada Python SDK:
envSetup Gradle.Maneira manual:
main ) -> Mark Directory as -> as Sources root . Linux - <installDir>/.gradle/python/Linux/<condaInstaller>-<condaVersion>
Windows - <installDir>/.gradle/python/Windows/<condaInstaller>-<condaVersion>
Macosx - <installDir>/.gradle/python/MacOSX/<condaInstaller>-<condaVersion>
Onde <installDir> é o catálogo raiz em que o CONDA será instalado especificado pela propriedade installDir , <condaInstaller> é o instalador do CONDA, por exemplo, Miniconda3 e <condaVersion> é a versão do instalador do CONDA, por exemplo, py38_4.8.3
Se você estiver familiarizado com o CONDA, também pode executar comandos do CONDA, como conda deactivate ou conda install diretamente com os binários dos catálogos acima.
Pode ser necessário para despertar PYTHONPATH no sistema antes de executar quaisquer tarefas (https://stackoverflow.com/a/31841132)
Você também pode executar alguns scripts simples de Python em linha em linha dentro de arquivos de construção como este:

O recurso Intellij 'injet Language' pode ser útil em esse cenário :)
/usr/bin/env: 'python': No such file or directory ao executar a tarefa envSetup -> está relacionado ao limite de shebang char, que é 128 .
Ao instalar o CONDA se o caminho do prefixo for mais longo que o limite, o shebang padrão ( #!/usr/bin/env python ) estiver sendo usado no arquivo de script do CONDA instalado ( condabin/conda ). Como nenhum binário Python é acessível por esse caminho, a exceção está sendo lançada.
A solução mais fácil é armazenar o projeto raiz no caminho mais curto possível ou usar o installDir para especificar um caminho mais curto por subproject problemático específico.