Overview¶
simple503
generates a static, PEP 503 simple repository of Python distributions.
It takes a directory of Python wheels and generates the necessary directories and index.html
files and.
The source directory can optionally be pre-sorted by project name, or simple503
can do this for you.
Example¶
See also
An online example repository can be seen at https://repo-helper.uk/simple503/
Consider the following directory:
simple
├── alabaster-0.7.12-py2.py3-none-any.whl
├── apeye-1.0.1-py3-none-any.whl
├── appdirs-1.4.4-py2.py3-none-any.whl
├── Babel-2.9.1-py2.py3-none-any.whl
├── cawdrey-0.4.2-py3-none-any.whl
├── certifi-2021.5.30-py2.py3-none-any.whl
├── chardet-4.0.0-py2.py3-none-any.whl
├── default_values-0.5.0-py3-none-any.whl
├── docutils-0.16-py2.py3-none-any.whl
├── domdf_python_tools-0.10.0-py3-none-any.whl
├── domdf_python_tools-0.9.2-py3-none-any.whl
└── zipp-3.4.1-py3-none-any.whl
After running simple503 ./simple
the directory looks like:
simple
├── alabaster
│ └── index.html
├── alabaster-0.7.12-py2.py3-none-any.whl
├── alabaster-0.7.12-py2.py3-none-any.whl.metadata
├── apeye
│ └── index.html
├── apeye-1.0.1-py3-none-any.whl
├── apeye-1.0.1-py3-none-any.whl.metadata
├── appdirs
│ └── index.html
├── appdirs-1.4.4-py2.py3-none-any.whl
├── appdirs-1.4.4-py2.py3-none-any.whl.metadata
├── babel
│ └── index.html
├── Babel-2.9.1-py2.py3-none-any.whl
├── Babel-2.9.1-py2.py3-none-any.whl.metadata
├── cawdrey
│ └── index.html
├── cawdrey-0.4.2-py3-none-any.whl
├── cawdrey-0.4.2-py3-none-any.whl.metadata
├── certifi
│ └── index.html
├── certifi-2021.5.30-py2.py3-none-any.whl
├── certifi-2021.5.30-py2.py3-none-any.whl.metadata
├── chardet
│ └── index.html
├── chardet-4.0.0-py2.py3-none-any.whl
├── chardet-4.0.0-py2.py3-none-any.whl.metadata
├── default-values
│ └── index.html
├── default_values-0.5.0-py3-none-any.whl
├── default_values-0.5.0-py3-none-any.whl.metadata
├── docutils
│ └── index.html
├── docutils-0.16-py2.py3-none-any.whl
├── docutils-0.16-py2.py3-none-any.whl.metadata
├── domdf-python-tools
│ └── index.html
├── domdf_python_tools-0.10.0-py3-none-any.whl
├── domdf_python_tools-0.9.2-py3-none-any.whl
├── domdf_python_tools-0.9.2-py3-none-any.whl.metadata
├── index.html
├── zipp
│ └── index.html
├── zipp-3.4.1-py3-none-any.whl
└── zipp-3.4.1-py3-none-any.whl.metadata
simple503
has created a directory for each project, and within that directory has created an index.html
containing a list of wheels for that project.
A top-level index.html
file has also been created, which lists all available projects.
simple503
can also be run with the --sort
option, which will move the wheels into the appropriate project directory:
simple
├── alabaster
│ ├── alabaster-0.7.12-py2.py3-none-any.whl
│ ├── alabaster-0.7.12-py2.py3-none-any.whl.metadata
│ └── index.html
├── apeye
│ ├── apeye-1.0.1-py3-none-any.whl
│ ├── apeye-1.0.1-py3-none-any.whl.metadata
│ └── index.html
├── appdirs
│ ├── appdirs-1.4.4-py2.py3-none-any.whl
│ ├── appdirs-1.4.4-py2.py3-none-any.whl.metadata
│ └── index.html
├── babel
│ ├── Babel-2.9.1-py2.py3-none-any.whl
│ ├── Babel-2.9.1-py2.py3-none-any.whl.metadata
│ └── index.html
├── cawdrey
│ ├── cawdrey-0.4.2-py3-none-any.whl
│ ├── cawdrey-0.4.2-py3-none-any.whl.metadata
│ └── index.html
├── certifi
│ ├── certifi-2021.5.30-py2.py3-none-any.whl
│ ├── certifi-2021.5.30-py2.py3-none-any.whl.metadata
│ └── index.html
├── chardet
│ ├── chardet-4.0.0-py2.py3-none-any.whl
│ ├── chardet-4.0.0-py2.py3-none-any.whl.metadata
│ └── index.html
├── default-values
│ ├── default_values-0.5.0-py3-none-any.whl
│ ├── default_values-0.5.0-py3-none-any.whl.metadata
│ └── index.html
├── docutils
│ ├── docutils-0.16-py2.py3-none-any.whl
│ ├── docutils-0.16-py2.py3-none-any.whl.metadata
│ └── index.html
├── domdf-python-tools
│ ├── domdf_python_tools-0.10.0-py3-none-any.whl
│ ├── domdf_python_tools-0.10.0-py3-none-any.whl.metadata
│ ├── domdf_python_tools-0.9.2-py3-none-any.whl
│ ├── domdf_python_tools-0.9.2-py3-none-any.whl.metadata
│ └── index.html
├── dom-toml
│ ├── dom_toml-0.5.0-py3-none-any.whl
│ ├── dom_toml-0.5.0-py3-none-any.whl.metadata
│ └── index.html
├── index.html
└── zipp
├── index.html
├── zipp-3.4.1-py3-none-any.whl
└── zipp-3.4.1-py3-none-any.whl.metadata
simple503
also extracts METADATA
files from the wheels, and exposes them per PEP 658.
To use the repository with pip, use the –extra-index-url option:
pip install <pkg_name> --extra-index-url file:///path/to/repository/simple
Alternatively, the directory can be uploaded to a static-file hosting service, and the public https URL used instead.
Similar Tools¶
simpleindex – can serve a PEP 503 repository using routing rules, such as to get some files from AWS S3 and pass other requests through to PyPI itself.
pypiserver – Serves packages from regular directories, with support for authentication and uploads.