Sekarang, Anda dapat menjalankan skrip Python dengan java dan lulusan hanya membangun.
Plugin Gradle ini secara otomatis mengunduh dan menginstal alat conda spesifik untuk menjalankan skrip Python atau executable lainnya ( pip , conda dll.) Dari Virtual Env.
Konfigurasi proyek Python dapat sepenuhnya otomatis dengan tugas lulusan sekarang.
11 atau lebih tinggi6.2 atau proyek yang lebih tinggi Menjalankan skrip atau proyek Python dengan mengeksekusi tugas tunggal yang akan mengunduh dan menginstal lingkungan virtual Python.
Konfigurasi Python tambahan (instalasi paket PIP/CONDA dll.) Dapat dilakukan dengan mendefinisikan tugas gradel di file build.gradle.kts .
Terapkan plugin ke proyek seperti yang dijelaskan di Portal Gradle.
Konfigurasikan plugin dengan menentukan versi python yang diinginkan dalam skrip build:
pythonPlugin {
pythonVersion = " 3.8.2 "
} Tentukan tugas untuk menjalankan skrip python yang diinginkan, misalnya untuk menjalankan skrip quicksort.py di Dir main Tambahkan konfigurasi tugas berikut untuk membangun skrip:
tasks {
register< VenvTask >( " runQuickSort " ) {
workingDir = projectDir.resolve( " main " )
args = listOf ( " quicksort.py " )
}
}Jalankan skrip Python dari Gradle:
# Linux
./gradlew runQuickSort
# Windows
gradlew.bat runQuickSortTunggu sampai Conda diinstal dan diatur lingkungan.
Menikmati :) 
Perilaku default plugin dapat disesuaikan dengan menentukan sifat -sifat berikut:
pythonVersion -> Python Environment Version, default 3.13.0 , yang tersedia dapat diperiksa di https://anaconda.org/conda-forge/python/condaVersion -> Versi Miniconda atau Anaconda, default py312_24.9.2-0 , yang tersedia dapat diperiksa di https://repo.anaconda.com/miniconda/ atau https://repo.anaconda.com/archive/ (anaconda))condaInstaller -> Conda Environment Installer Name, default adalah Miniconda3 , untuk perubahan anaconda ke Anaconda3condaRepoUrl -> URL repositori yang harus digunakan untuk mengunduh binari, default https://repo.anaconda.com/miniconda , untuk anaconda https://repo.anaconda.com/archive/condaRepoUsername -> Nama pengguna untuk auth dasar jika diperlukan, tidak ada secara defaultcondaRepoPassword -> Kata sandi untuk auth dasar, digunakan jika condaRepoUsername ditentukan, tidak boleh diteruskan langsung dalam file skrip, dapat disediakan oleh properti lulusan, tidak ada secara defaultcondaRepoHeaders -> header opsional tambahan yang digunakan untuk koneksi, peta kosong secara defaultuseHomeDir -> Saat true direktori instalasi default akan menjadi yang dari user.home sistem properti, false secara defaultinstallDir -> properti untuk menyesuaikan direktori instalasi conda, sama dengan <rootProjectDir>/.gradle/python secara default atau rumah pengguna jika useHomeDir = truesystemArch -> Arsitektur Sistem Operasi, default didapat dari properti os.arch SystemideaDir -> Target .idea direktori untuk mendeteksi proyek intellij, sama dengan <rootProjectDir>/.idea secara default Konfigurasi ekstensi sampel di dalam file 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 "
}VenvTaskSemua tugas yang harus dieksekusi dalam Virtual Env juga dapat disesuaikan dengan bidang berikut:
venvExec -> nama yang dapat dieksekusi dari virtual env yang akan dieksekusi, python secara defaultinputFile -> file input opsional, tidak ada secara defaultoutputFile -> file output opsional, tidak ada secara defaultargs -> Daftar Argumen untuk venvExec yang dapat dieksekusi, kosong secara defaultworkingDir -> Working Directory, Direktori Proyek Secara Defaultenvironment -> Peta dengan variabel lingkungan untuk diterapkan selama eksekusi, kosong secara default Contoh Konfigurasi VenvTask di dalam file 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 dalam proyek ini. Impor otomatis terpasang Python SDK:
envSetup Lulusan.Cara 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>
Di mana <installDir> adalah katalog root di mana conda akan diinstal ditentukan oleh properti installDir , <condaInstaller> adalah installer conda misalnya Miniconda3 dan <condaVersion> adalah versi installer conda misalnya py38_4.8.3
Jika Anda terbiasa dengan Conda, Anda juga dapat menjalankan perintah Conda seperti conda deactivate atau conda install langsung dengan binari dari katalog di atas.
Mungkin diminta untuk membuka PYTHONPATH dalam sistem sebelum menjalankan tugas apa pun (https://stackoverflow.com/a/31841132)
Anda juga dapat menjalankan beberapa skrip Python inline sederhana di dalam build file seperti ini:

Fitur Intellij 'Inject Language' dapat berguna dalam skenario seperti itu :)
/usr/bin/env: 'python': No such file or directory saat menjalankan tugas envSetup -> itu terkait dengan batas char shebang yang 128 .
Saat menginstal conda jika jalur awalan lebih panjang dari batas shebang default ( #!/usr/bin/env python ) digunakan dalam file skrip conda yang diinstal ( condabin/conda ). Karena tidak ada biner Python yang dapat diakses oleh jalur ini, pengecualian sedang dilemparkan.
Solusi termudah adalah menyimpan proyek root di jalur sesingkat mungkin atau menggunakan installDir untuk menentukan jalur yang lebih pendek per subproyek yang merepotkan tertentu.