rez-pip is a rez command-line plugin that you can use to make package from the Python Package Index and other indexes available to your rez package ecosystem.
- Simpler to use thanks to the vendoring of pip.
- Does not support installing packages for Python 2.
- Only creates per python version variants when absolutely necessary. For example, it won't create per python version variants when installing a package that has console scripts.
- Better output logs.
- Implemented as an out-of-tree plugin, which means faster development cycle and more frequent releases.
- Plugin system that allows for easy extensibility (experimental).
- Maintained by the rez maintainers.
- Install packages without using pip
- Specify Python version to use
- Better logs and CLI experience
- Use logging
- Progress bars for download?
- Confirm that Python 2 is supported
- It is not...
- Confirm that the theory works as expected
- Windows support
- Hook into rez
- Install each package in a different
--target
- Create rez package
- Copy distribution files to rez package.
- Make it available as a rez plugin/sub-command
- Discover Python package using rez and use that when available. I think it's still fine to support non-rezified Python interpreters though.
- Install each package in a different
- Accept multiple package names as input
- Accept requirements files as input
- Accept wheel files as input
- Properly support platform tags (wheels tags) so that GLIBC is respected, min macOS is also supported.
- Correctly handle Requires-Python metadata.
- Review all TODOs in the code.
What whould we do withrez.system
andrez.vendor.version
?- Gather a list of problematic packages from GitHub and test against them.
- Go through GitHub issues and summarize what needs to be covered by the new rez-pip.
- Support abi3 wheels (to avoid having to re-install C extensions for every python version).
- https://docs.python.org/3/c-api/stable.html
- https://peps.python.org/pep-0425/
- Basically a tag like 'cp36-abi3-manylinux_2_24_x86_64' means that it is compatible with Python 3.6+ and doesn't need to be recompiled for newer python versions.
- pytest
- PySide, PySIde2, PySide6
- PyQt4, PyQt5
- psycopg2-binary
- ipython
- numpy
- protobuf
- click
- Pygments (AcademySoftwareFoundation/rez#1430)
- google_api_core (AcademySoftwareFoundation/rez#1414)
- sphinx
- networkx[default] (AcademySoftwareFoundation/rez#1409)
- black (AcademySoftwareFoundation/rez#1341)
- pylint (AcademySoftwareFoundation/rez#1024)
- ampq (AcademySoftwareFoundation/rez#906)
- cmd2 (AcademySoftwareFoundation/rez#895)
- astroid (AcademySoftwareFoundation/rez#876)
- Qt.py (AcademySoftwareFoundation/rez#503)
- Pillow
- BeautifulSoup4
- python-dateutil (AcademySoftwareFoundation/rez#390)