Gradle plugin using miniforge to run Python projects

Python Gradle Plugin
Now, all what is required to run python scripts is Java.
This Gradle Plugin uses Miniforge
to run executables (python
, pip
, conda
etc.) from virtual env.
Python project configuration can be fully automated by Gradle tasks.
Requirements
- Java JDK or JRE version 8 or higher
Purpose
Running python scripts or projects by executing single tasks which will download and install Python virtual environment.
Additional Python configuration (pip/conda packages installation etc.) can be done by defining Gradle tasks in build.gradle.kts
file.
Usage
Steps to run python script from Gradle
-
Apply a plugin to a project as described on gradle portal.
-
Configure a plugin by specifying desired python version in build script:
pythonPlugin { pythonVersion.set("3.8.2") }
Possible properties in plugin extension are:
pythonVersion
-> Python environment version, default3.10.4
miniforgeVersion
-> Miniforge3 version, defaultlatest
-
Define a task to run desired python script, for example to run
quicksort.py
script inmain
dir add the following task configuration to build script:tasks { register<VenvTask>("runQuickSort") { workingDir = projectDir.resolve("main") args = listOf("quicksort.py") } }
-
Run python script from gradle:
# Linux ./gradlew runQuickSort # Windows gradlew.bat runQuickSort
Additional examples alongside with sample PipTasks configurations can be found in examples
module in this project.
Intellij setup
- To have autocomplete and modules properly recognized in Intellij Idea simply point python executable as described in: https://www.jetbrains.com/help/idea/configuring-python-sdk.html
- To have properly recognized imported source modules in tests, right click on sources directory (for example
main
) ->Mark Direcotry as
->as Sources root
.
Python exec locations (*
is a configured python version)
Linux – .gradle/python/pythonVenvs/virtualenv-*/bin/python
Windows – .gradle/python/pythonVenvs/virtualenv-*/Scripts/python.exe
Notes
- It may be required to unset
PYTHONPATH
in system before running any tasks (https://stackoverflow.com/a/31841132)
Credits
This project is heavily inspired and is built on https://github.com/PrzemyslawSwiderski/python-gradle-plugin