이제 Java 및 Gradle 빌드만으로 Python 스크립트를 실행할 수 있습니다.
이 Gradle 플러그인은 가상 Env에서 Python 스크립트 또는 기타 실행 파이브 ( pip , conda 등)를 실행하기 위해 특정 Conda 도구를 자동으로 다운로드하고 설치합니다 .
Python Project 구성은 지금 Gradle 작업으로 완전히 자동화 할 수 있습니다.
11 이상6.2 이상 프로젝트 Python 가상 환경을 다운로드하여 설치하는 단일 작업을 실행하여 Python 스크립트 또는 프로젝트를 실행합니다.
추가 Python 구성 (PIP/Conda 패키지 설치 등)은 build.gradle.kts 파일에서 Gradle 작업을 정의하여 수행 할 수 있습니다.
Gradle Portal에 설명 된대로 프로젝트에 플러그인을 적용하십시오.
빌드 스크립트에서 원하는 파이썬 버전을 지정하여 플러그인 구성 :
pythonPlugin {
pythonVersion = " 3.8.2 "
} 예를 들어 quicksort.py 스크립트를 실행하려면 원하는 Python 스크립트를 실행하는 작업을 정의하십시오. main DIR에서 다음 작업 구성을 추가하여 스크립트를 작성하십시오.
tasks {
register< VenvTask >( " runQuickSort " ) {
workingDir = projectDir.resolve( " main " )
args = listOf ( " quicksort.py " )
}
}Gradle에서 파이썬 스크립트 실행 :
# Linux
./gradlew runQuickSort
# Windows
gradlew.bat runQuickSort콘다가 설치되고 환경이 설치 될 때까지 기다리십시오.
즐기다 :) 
플러그인 기본 동작은 다음 속성을 지정하여 조정할 수 있습니다.
pythonVersion > Pythonversion 버전, 기본 3.13.0 , 사용 가능한 것들은 https://anaconda.org/conda-forge/python/에서 확인할 수 있습니다.condaVersion -> 미니콘다 또는 아나콘다 버전, 기본 py312_24.9.2-0 , 사용 가능한 것들은 https://repo.anaconda.com/miniconda/ 또는 https://repo.anaconda.com/archive/ (anaconda)에서 확인할 수 있습니다.condaInstaller > Conda Environment Installer 이름, 기본값은 Miniconda3 입니다 Anaconda3condaRepoUrl > repository URL은 anaconda https://repo.anaconda.com/archive/ 에 대해 Binaries, default https://repo.anaconda.com/miniconda 다운로드하는 데 사용해야합니다.condaRepoUsername > 필요한 경우 기본 인증의 사용자 이름, 기본적으로 결석condaRepoPassword > condaRepoUsername 이 지정된 경우 사용되는 기본 인증의 비밀번호는 스크립트 파일에 직접 전달되지 않아야하며 기본적으로 결석 한 Gradle 속성으로 제공 할 수 있습니다.condaRepoHeaders > 연결에 사용되는 추가 선택 헤더, 기본적으로 빈지도useHomeDir > true 설치 디렉토리가 user.home 시스템 속성, 기본적으로 false 됩니다.installDir > 속성 Conda 설치 디렉토리를 useHomeDir 정의하기위한 속성 <rootProjectDir>/.gradle/python 과 동일합니다 truesystemArch > 운영 체제 아키텍처, 기본값은 os.arch System 속성에서 가져옵니다.ideaDir <rootProjectDir>/.idea target .idea directory elite 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 "
}VenvTask 작업 속성가상 환경에서 실행 해야하는 모든 작업은 다음 분야에서도 사용자 정의 할 수 있습니다.
venvExec > 실행 될 가상 Env에서 실행 파일의 이름, 기본적으로 pythoninputFile > 선택적 입력 파일, 기본적으로 없음outputFile > 선택적 출력 파일, 기본적으로 없음args > venvExec 실행 가능에 대한 인수 목록, 기본적으로 비어 있습니다.workingDir > 작업 디렉토리, 기본적으로 프로젝트 디렉토리environment -> 실행 중에 적용 할 환경 변수가 포함 된 맵, 기본적으로 비어 있습니다. build.gradle.kts 파일 내부의 VenvTask 구성 샘플 :
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 모듈에서 찾을 수 있습니다. 자동 가져 오기 설치된 Python SDK :
envSetup 작업을 실행하십시오.수동 방법 :
main ) -> Mark Directory as as Sources root ->. Linux- <installDir>/.gradle/python/Linux/<condaInstaller>-<condaVersion>
<installDir>/.gradle/python/Windows/<condaInstaller>-<condaVersion>
MacOSX- <installDir>/.gradle/python/MacOSX/<condaInstaller>-<condaVersion>
여기서 <installDir> 는 installDir 속성으로 Conda를 설치하는 루트 카탈로그이며, <condaInstaller> 는 Conda Installer 예를 들어 Miniconda3 이고 <condaVersion> Conda Installer 버전, 예를 들어 py38_4.8.3 입니다.
Conda에 익숙하다면 conda deactivate 또는 conda install 수도 있습니다.
작업을 실행하기 전에 시스템에서 PYTHONPATH 미치지 않아야 할 수도 있습니다 (https://stackoverflow.com/a/31841132).
다음과 같은 빌드 파일 내부에서 간단한 인라인 파이썬 스크립트를 실행할 수도 있습니다.

Intellij 'Inject Language'기능은 이러한 시나리오에서 유용 할 수 있습니다 :)
/usr/bin/env: 'python': No such file or directory envSetup Task를 실행할 때 그러한 파일 또는 디렉토리가 없음 -> 128 인 Shebang char 한계와 관련이 없습니다.
접두사 경로가 한계보다 길면 콘다를 설치할 때 기본 Shebang ( #!/usr/bin/env python )이 설치된 Conda 스크립트 파일 ( condabin/conda )에서 사용됩니다. 이 경로에서는 파이썬 바이너리에 액세스 할 수 없으므로 예외가 발생합니다.
가장 쉬운 솔루션은 루트 프로젝트를 가능한 가장 짧은 경로에 저장하거나 installDir 사용하여 특정 귀찮은 하위 프로젝트 당 짧은 경로를 지정하는 것입니다.