pyeasydeploy
Deploy a Python app to a Linux server with a few lines of Python and no sudo. The server only needs SSH and systemd: the deploy brings everything else.
from pyeasydeploy import App, Key, Server, deploy_app, ensure_python, ensure_uv
server = Server(address="203.0.113.10", user="deploy", auth=Key(path="~/.ssh/id_ed25519"))
python = ensure_python(ensure_uv(server), "3.13")
deploy_app(python, App(name="web", source="./web", command="web"))
That is the whole deploy, and it:
- Brings its own Python. It uploads uv, which installs the Python you ask for. The distribution, its packages and its Python never matter.
- Installs exactly your
uv.lock. The server never picks versions on its own. - Keeps the app running while it installs. Each deploy is a new release, switched to with one restart. A failed install leaves the running one untouched.
- Runs it as a service. systemd keeps it alive and starts it at boot. Its output goes to the journal, which rotates on its own.
- Stays in its folder. Everything lives in
~/.pyeasydeploy, and nothing outside it is ever removed.
Immutable values and plain functions on top of Fabric, made for a few servers and a team that writes Python.
The full documentation is at https://offerrall.github.io/pyeasydeploy/.
Documentation
Metadata
Release files for pyeasydeploy 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pyeasydeploy-2.0.0.tar.gz | 13.2 kB | With provenance | Details for pyeasydeploy-2.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyeasydeploy-2.0.0-py3-none-any.whl | Python 3 | none | any | Details for pyeasydeploy-2.0.0-py3-none-any.whl |
Total release size: 23.3 kB
Release files / pyeasydeploy-2.0.0.tar.gz
| Download URL | pyeasydeploy-2.0.0.tar.gz |
|---|---|
| Size | 13.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
46399281c492b44d2742c33337164fb00cae0bedb7c0efd9c52a6e485b9e07f8
|
|
BLAKE2b-256 checksum How to use checksums |
4cdef37771f59aa746e19ff2feca2394c08ccbccce37ee7fb839f4563981a5ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.
Transparency logRelease files / pyeasydeploy-2.0.0-py3-none-any.whl
| Download URL | pyeasydeploy-2.0.0-py3-none-any.whl |
|---|---|
| Size | 10.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d7599313b3fe543de783418f962097a303fdc5183f6d33662fa50c15df0ec9ca
|
|
BLAKE2b-256 checksum How to use checksums |
7a951197922ce08c0722dfee56f7f1f5c6e06eafb777be7943cf36a5da7925c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.
Transparency logSecurity for pyeasydeploy 2.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for pyeasydeploy-2.0.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.