Brett Cannon
2018-03-02 20:55:39 UTC
I have a project idea, but before I start it I need to make sure that I
have the high-order steps necessary to go from `pip install pip=9.0.1` to
it actually ending up on disk. Now I'm only considered with
modern/bleeding-edge, spec-based stuff, so PEP 517/518 and no setup.py, etc.
Anyway, if people can point out any steps the below outline is missing I
would appreciate it. Thanks!
1. Specify package requirement
1. Translate name to PyPI-compatible name
2. Tease out requirement details (e.g. version, markers, etc.)
2. Check if package is already installed
3. Check PyPI for package
4. Choose appropriate file
1. Get list of files
2. Calculate best-fitting wheel
3. Fallback to .tar.gz sdist
5. Download file
6. If sdist:
1. Extract
2. Read pyproject.toml
3. Create venv
4. Install build dependencies
5. Build wheel
7. Cache wheel
8. Get dependency requirements
9. Check if dependencies are already installed
10. Install missing dependencies
11. Install wheel
1. To appropriate location (e.g. user, venv, etc.)
2. Library, scripts, etc. to appropriate locations
12. Record the installation
have the high-order steps necessary to go from `pip install pip=9.0.1` to
it actually ending up on disk. Now I'm only considered with
modern/bleeding-edge, spec-based stuff, so PEP 517/518 and no setup.py, etc.
Anyway, if people can point out any steps the below outline is missing I
would appreciate it. Thanks!
1. Specify package requirement
1. Translate name to PyPI-compatible name
2. Tease out requirement details (e.g. version, markers, etc.)
2. Check if package is already installed
3. Check PyPI for package
4. Choose appropriate file
1. Get list of files
2. Calculate best-fitting wheel
3. Fallback to .tar.gz sdist
5. Download file
6. If sdist:
1. Extract
2. Read pyproject.toml
3. Create venv
4. Install build dependencies
5. Build wheel
7. Cache wheel
8. Get dependency requirements
9. Check if dependencies are already installed
10. Install missing dependencies
11. Install wheel
1. To appropriate location (e.g. user, venv, etc.)
2. Library, scripts, etc. to appropriate locations
12. Record the installation