PyGradle is an enterprise Python build system.
PyGradle leverages Gradle to empower Python's existing ecosystem to solve problems like dependency management, polyglot projects, and lots more. LinkedIn has been using PyGradle for several years to successfully manage thousands of Python dependencies.
PyGradle produces artifacts, e.g., source distributions, that are forward and backward compatible with artifacts produced by vanilla setuptools, so there is nothing stopping you from using PyGradle with one, two, or all of your Python projects right away!
As a general philosophy, we strive enhance Python rather than replace it, thereby keeping open source Python development idiomatic and intuitive.
PyGradle does not include batteries: there are a few things that you're going to have to do to use PyGradle for things beyond our provided examples.
In particular, you're going to have to:
- Decide how you want to host your artifacts.
- Decide how you want to distribute a custom setuptools distribution class.
- Author your build.gradle file.
These decisions and tasks shouldn't take to long for you finish, but they are required. A deeper dive into what it takes to get started, how you can use our demonstrative Artifactory instance, and a few project examples is available in our detailed getting started guide.
Although not required, if you've never used Gradle before, you might find reading Gradle's user guide helpful.
PyGradle comes with several plugins available, for specific details on each plugin check the documentation specific to that plugin.
|com.linkedin.python-sdist||Developing Source Distributions|
|com.linkedin.python-web-app||Developing Flask/Gunicorn Web Applications|
|com.linkedin.python-cli||Developing Command Line Applications|
|com.linkedin.python-flyer||Developing Flyer (Flask + Ember) Applications|
|com.linkedin.python-pex||Developing Pex Applications|
We're actively maintaining PyGradle and accepting pull requests.
If you're interested in contributing code to PyGradle, please see our developers document to get started. This document covers how to build, test, and debug PyGradle, and kindly asks that you follow a few conventions when submitting pull requests.
We support PyGradle on the following software versions.
We're happy to review and merge pull requests that add additional support to future versions of software.
PyGradle works on the following platforms.
Additional compatibility notes are availabe here. We're happy to review and merge pull requests that add support for additional platforms.
Known Potential Issues
- Due to a bug in pip, when trying to install scipy may fail. A potential work around is to use a newer version of pip. A PR was merged into pip master that fixes the issue (https://github.com/pypa/pip/pull/3701), a version of pip with the fix in it has not been released yet. If this is an issue for your org, you could release a version of pip with this fix in it. For more details on the change and issues please review https://github.com/pypa/pip/pull/3701 and https://github.com/pypa/pip/pull/3079