现在,您可以使用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来指定每个特定麻烦的子标记的较短路径。