これで、JavaとGradleビルドのみでPythonスクリプトを実行できます。
このGradleプラグインは、仮想envからPythonスクリプトまたはその他の実行可能ファイル( pip 、 condaなど)を実行するための特定のCondaツールを自動的にダウンロードおよびインストールします。
Pythonプロジェクトの構成は、Gradleタスクによって完全に自動化できます。
11以上6.2以下のプロジェクトPython仮想環境をダウンロードしてインストールする単一のタスクを実行することにより、Pythonスクリプトまたはプロジェクトを実行します。
追加のPython構成(PIP/Condaパッケージのインストールなど)は、 build.gradle.ktsファイルでGradleタスクを定義することで実行できます。
Gradle Portalで説明されているプロジェクトにプラグインを適用します。
ビルドスクリプトで目的のPythonバージョンを指定して、プラグインを構成します。
pythonPlugin {
pythonVersion = " 3.8.2 "
}希望のpythonスクリプトを実行するタスクを定義します。たとえば、 quicksort.pyスクリプトをmain dirで実行するなど、次のタスク構成を追加してスクリプトを作成します。
tasks {
register< VenvTask >( " runQuickSort " ) {
workingDir = projectDir.resolve( " main " )
args = listOf ( " quicksort.py " )
}
}GradleからPythonスクリプトを実行します:
# Linux
./gradlew runQuickSort
# Windows
gradlew.bat runQuickSortCondaが設置され、環境がセットアップされるまで待ちます。
楽しむ :) 
プラグインのデフォルトの動作は、次のプロパティを指定することで調整できます。
pythonVersion > python環境バージョン、デフォルト3.13.0 、利用可能なものはhttps://anaconda.org/conda-forge/python/で確認できます。condaVersion > MinicondaまたはAnacondaバージョン、デフォルトのpy312_24.9.2-0 、利用可能なものはhttps://repo.anaconda.com/miniconda/またはhttps://repo.anaconda.com/archive/(anaconda)で確認できます。condaInstaller > conda環境インストーラー名、デフォルトはAnaconda3への変更のためにMiniconda3です。condaRepoUrl >バイナリをダウンロードするために使用するリポジトリURL、デフォルトのhttps://repo.anaconda.com/miniconda https://repo.anaconda.com/archive/condaRepoUsername >必要に応じて基本的な認証のユーザー名、デフォルトではありませんcondaRepoPassword > condaRepoUsernameが指定されている場合に使用される基本的な認証のパスワードは、スクリプトファイルに直接渡されないでください。condaRepoHeaders >接続に使用される追加のオプションヘッダー、デフォルトで空のマップuseHomeDir > trueの場合、デフォルトのインストールディレクトリはuser.home systemプロパティからのものになります。デフォルトではfalseinstallDir >プロパティCondaインストールディレクトリをカスタマイズするには、 <rootProjectDir>/.gradle/pythonデフォルトでgradle/pythonに等しく、 useHomeDir = trueの場合はユーザーホームに等しくなりますsystemArch >オペレーティングシステムアーキテクチャ、デフォルトはos.arch System Propertyから取得されますideaDir >ターゲット.ideaディレクトリIntellijプロジェクトを検出するには、 <rootProjectDir>/.idea 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タスクプロパティ仮想ENVで実行する必要があるすべてのタスクは、次のフィールドによってもカスタマイズできます。
venvExec >実行可能なvirtual envからの実行可能ファイル、デフォルトでpythoninputFile >オプションの入力ファイル、デフォルトではありませんoutputFile - >オプションの出力ファイル、デフォルトではありませんargs > venvExec実行可能ファイルの引数のリスト、デフォルトで空にworkingDir > Working Directory、Project Directoryデフォルト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構成とともに、サンプルPIPTASKの構成とともに追加の例を見つけることができます。 自動インポートインストールされたPython SDK:
envSetupタスクを実行します。手動の方法:
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>
ここで、 <installDir> <condaInstaller> 、 installDirプロパティによって指定されたコンドラ<condaVersion>インストールされるルートカタログpy38_4.8.3 Miniconda3
Condaに精通している場合は、 conda deactivate 、上記のカタログからバイナリに直接conda installコマンドを実行することもできます。
タスクを実行する前にシステムでPYTHONPATHを設定する必要がある場合があります(https://stackoverflow.com/a/31841132)
このようなビルドファイル内でいくつかの単純なインラインPythonスクリプトを実行することもできます。

Intellij「Inject Language」機能は、このようなシナリオで役立ちます:)
/usr/bin/env: 'python': envSetupタスクを実行する場合/usr/bin/env: 'python': No such file or directory - >それは128であるシェバンのchar制限に関連しています。
接頭辞パスが制限よりも長い場合、コンドマをインストールする場合、デフォルトのShebang( #!/usr/bin/env python )がインストールされているCondaスクリプトファイル( condabin/conda )で使用されています。このパスではPythonバイナリにアクセスできないため、例外はスローされています。
最も簡単な解決策は、ルートプロジェクトを可能な限り最短のパスに保存するか、 installDirを使用して特定の厄介なサブプロジェクトごとに短いパスを指定することです。