From the makers of ruff comes uv
TL;DR:
uvis an extremely fast Python package installer and resolver, written in Rust, and designed as a drop-in replacement forpipandpip-toolsworkflows.
It is also capable of replacing virtualenv.
With this announcement, the rye project and package management solution created by u/mitsuhiko (creator of Flask, minijinja, and so much more) in Rust, will be maintained by the astral team.
This "merger" and announcement is all working toward the goal of a Cargo-type project and package management experience, but for Python.
For those of you who have big problems with the state of Python's package and project management, this is a great set of announcements...
For everyone else, there is https://xkcd.com/927/.
-
Twitter Announcement
-
PyPI
-
GitHub
Install it today:
pip install uv # or pipx install uv # or curl -LsSf https://astral.sh/uv/install.sh | sh
https://github.com/Lioncat2002/FerryRecently got into Rust programming and thought this would be a good project
this is essentially a rewrite of CBreeze python package manager which I wrote in C++ which was unfortunately limited to linux only and a few other short comings.
Hopefully in this rewrite I will be root out those caveats.I will keep this thread updated as regularly as I can.
Change Log:
Version Ferry-0.0.2-alpha:- Better cli and a run command
Version Ferry-0.0.1-prealpha:-Added the ability to install packages without needing to manually activate the virtual environment.
Version Ferry-0.0.0-prealpha:- Ability to fetch packages from PyPI
- Ability to create a new project complete with a virtual environment(WIP)
- Can run on windows(need to work on the project creation command on linux)
Videos
Hi! I started Huak to build a package manager focusing on making Python projects more approachable by offering a standardized workflow.
https://github.com/cnpryer/huak
You do need the rust toolchain installed if you want to install huak during the PoC phase. Either way any feedback is appreciated.
If you're also a long time Python dev that enjoys package managers feel free to reach out. I'd love to chat about your preferences.
pypi.org/project/pyrgo/
Pyrgo stands as a straightforward Python package manager, cleverly encompassing staple tools such as pytest, piptools, ruff, and mypy. This unification under a singular API significantly elevates the Python development process. Unlike its counterparts, such as poetry, Pyrgo distinguishes itself by bypassing the need for a unique pyproject.toml schema. Instead, it adeptly leverages the official pip and piptools libraries for managing dependencies and handling the pyproject.toml file, fostering a streamlined and efficient approach. -- ChatGPT
I am a beginner Python programmer but an experienced programmer. Doing the Hugging Face AI agents course and I had so many issue installing Python packages. My latest issue is this, why is this experience so bad. This will drive away people trying to cut their teeth.
pip install llama-index datasets llama-index-callbacks-arize-phoenix llama-index-vector-stores-chroma llama-index-llms-huggingface-api -U -q
Note: you may need to restart the kernel to use updated packages.
error: subprocess-exited-with-error
× Preparing metadata (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [6 lines of output]
Checking for Rust toolchain....
Cargo, the Rust package manager, is not installed or is not on PATH.
This package requires Rust and Cargo to compile extensions. Install it through
the system's package manager or via
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
https://rustup.rs/I keep getting this same error on my code whenever i try to run venv_requirements.txt, I installed rust and cargo but its still giving me the same error...
Cargo, the Rust package manager, is not installed or is not on PATH.
This package requires Rust and Cargo to compile extensions. Install it through
the system's package manager or via https://rustup.rs/
Mine is personally uv because it's so fast and I like the way it formats everything as a package. But to be fair, I haven't really tried out any other package managers.
Been noticing an interesting trend lately - Rust is becoming the secret sauce behind many of Python's most innovative tools. As someone who works with Python daily, it's fascinating to see how the ecosystem is evolving.
Here's what's caught my attention:
Ruff: This linter is absurdly fast compared to traditional Python linters. Why? It's written in Rust. We're talking 10-100x speedups here.
PyOxidizer: A solid solution for creating standalone Python applications. Again, Rust. (unfortunately not maintained anymore)
Polars: This DataFrame library is giving Pandas a run for its money in terms of performance. Guess what? Rust under the hood.
Maturin: Making it dead simple to create Python extensions in Rust.
My team has written a blog post diving deeper into this trend, specifically looking at PyO3 (the framework that makes Python/Rust integration possible) and showing how to build your own high-performance Python extensions with Rust. If you wish, you can read it here: https://www.blueshoe.io/blog/python-rust-pyo3/
The really interesting part is that most Python developers don't even realize they're using Rust-powered tools. It's like Rust is becoming Python's performance co-pilot without much fanfare.
What are your thoughts on this trend? Have you tried building any Python extensions with Rust?
Full disclosure: Our team at Blueshoe wrote the blog post, but I genuinely think this is an important trend worth discussing.
My background is a golang engineer, and now I am transferring to the AI field, starting to learn Python, and I find that it is too weak in engineering, which may be due to my lack of experience. Recently, I found that the UV tool is one that I use very smoothly, the management is very good, the underlying Rust language implementation is very fast, and I like it very much.
As standards have progressed and core installers are supporting them (i.e. setuptools and pip) it seems finally a crop of package managers are finally developing for Python which all aim to make the whole lifecycle of managing and building packages easily.
I never migrated any of my workflows to Poetry because I find that workflows I've set up using constraints not completely covered by Poetry features or workflows, and it's complexity is significantly higher than the two shell scripts I use to automate my flow.
So I'm wondering if anyone has significant experience with this new crop of package managers, e.g. PDM, Rye, Hatch, Hauk, pixi, or any others? Any pros or cons? Reasons you would adopt or avoid?
One of Rust's many strengths is that it can be seamlessly integrated with Python and speed up critical code sections. I recently wrote a small library with an efficient ragged array datatype, and I figured it would make for a good example of how to set up a Rust Python package with PyO3 and maturin that interoperates with numpy. There are a lot of little details that took me quite a while to figure out:
Publishing to PyPI:
GitHub action that builds and publishes wheels for multiple Python versions and operating systems
Package dependencies and metadata must be specified in a pyproject.toml
To get the README to show up on the PyPI website, it needs to beset explicitly in Cargo.toml(maturin#552)(EDIT: fixed in maturin#751)Badge that displays the latest package version on PyPI
Exporting MyPy type annotations:
In most cases, you will only need a type stubs file placed in the root project directory, in which case the name of the file should be the same as the package name
Since this is a mixed Python/Rust project, you also need to place a py.typed marker file in the Python module
There is some extra Python code to export a generic version of the
RaggedBufferdatatype (generics are not supported by PyO3)
Integration with numpy uses the rust-numpy crate:
Example of method that accepts numpy arrays as arguments
Example of a method that returns a numpy array to Python (this performs a copy, there ought to be a way to avoid it but the current implementation has been plenty fast for my use case so far)
Implementing special Python methods such as __str__, __repr__, and __cmp__, multiplication and addition operators, and indexing operations
Hi! I am a devops engineer and notice developers talking about uv package manager. I used it today for the first time and loved it. It seems like everyone is talking to agrees. Does anyone have and cons for us package manager?