現在,您可以使用Java和Gradle構建Python腳本。
該Gradle插件自動下載並安裝特定的Conda工具以從虛擬env運行Python腳本或其他可執行文件( pip , conda等)。
Python項目配置現在可以通過Gradle任務完全自動化。
11或更高6.2或更高的項目通過執行將下載和安裝Python虛擬環境的單個任務來運行Python腳本或項目。
可以通過在build.gradle.kts文件中定義gradle任務來完成其他Python配置(PIP/CONDA軟件包安裝等)。
如Gradle Portal上所述,將插件應用於項目。
通過在構建腳本中指定所需的Python版本來配置插件:
pythonPlugin {
pythonVersion = " 3.8.2 "
}定義一個任務以運行所需的python腳本,例如在main dir中運行quicksort.py腳本添加以下任務配置以構建腳本:
tasks {
register< VenvTask >( " runQuickSort " ) {
workingDir = projectDir.resolve( " main " )
args = listOf ( " quicksort.py " )
}
}從Gradle運行Python腳本:
# Linux
./gradlew runQuickSort
# Windows
gradlew.bat runQuickSort等到安裝Conda並設置環境。
享受 :) 
插件默認行為可以通過指定以下屬性來調整:
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)檢查可用的py312_24.9.2-0condaInstaller > conda環境安裝程序名稱,默認值是Miniconda3 ,用於anaconda更改為Anaconda3condaRepoUrl >應用於下載二進製文件的存儲庫URL,默認https://repo.anaconda.com/miniconda ,用於anaconda https://repo.anaconda.com/archive/condaRepoUsername >基本驗證的用戶名(如果需要),默認情況下不使用condaRepoPassword >基本驗證的密碼,如果指定了condaRepoUsername ,則不應直接在腳本文件中傳遞,可以由Gradle屬性提供,默認情況下不使用condaRepoHeaders >用於連接的其他可選標頭,默認情況下空圖useHomeDir >當true時,默認安裝目錄將是user.home系統屬性的默認設備,默認為falseinstallDir dir->屬性以自定義conda安裝目錄,等於<rootProjectDir>/.gradle/python (如果useHomeDir = true或用戶家庭systemArch >操作系統體系結構,默認值是從os.arch System屬性獲得的ideaDir > target .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任務屬性以下字段也可以自定義虛擬設施中應執行的所有任務:
venvExec >將執行將執行的Virtual Env的可執行文件名稱,默認為pythoninputFile >可選輸入文件,默認沒有outputFile >可選輸出文件,默認沒有args > venvExec的參數列表,默認情況下為空workingDir > Working Directory,默認情況下項目目錄environment - >映射具有在執行期間要應用的環境變量,默認為空sample VenvTask配置在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模塊中找到。 自動導入安裝的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>是root目錄,其中將通過installDir屬性指定conda, <condaInstaller>是conda installer,例如Miniconda3和<condaVersion>是conda installer版本,例如py38_4.8.3
如果您熟悉Conda,也可以執行Conda命令,例如conda deactivate或直接使用上面目錄中的二進製文件conda install 。
在運行任何任務之前,可能需要在系統中取消設置PYTHONPATH (https://stackoverflow.com/a/31841132)
您還可以在構建文件中運行一些簡單的內聯python腳本:

Intellij“注入語言”功能在這種情況下可能很有用:)
/usr/bin/env: 'python': No such file or directory執行envSetup任務時沒有此類文件或目錄 - >它與Shebang Char限制相關,即128 。
安裝CONDA時,如果前綴路徑的長度大於默認的Shebang( #!/usr/bin/env python )的限制,則在已安裝的conda腳本文件( condabin/conda )中使用。由於該路徑無法訪問python二進制,因此正在拋出異常。
最簡單的解決方案是將根項目存儲在最短的路徑上,或使用installDir來指定每個特定麻煩的子標記的較短路徑。