EVERYTHING XIAOMI
Get listed

pypiserver

pypiserver is a self-hosted package index for serving Python packages through standard tools such as pip and twine.

Place
#7 of 28
Score
6.9
pypiserver's website

What pypiserver is

pypiserver is a self-hosted package index for serving Python packages through standard tools such as pip and twine. It reads packages recursively from regular directories and supports wheels, bdists, eggs, and accompanying PGP signatures. Uploads can be sent with pip, setuptools, twine, or pypi-uploader, or copied to the server with scp. Upload access can be protected with an Apache htpasswd file; API users can also configure custom authentication callables. The maintainers advise protecting uploads with a password, and the documentation recommends a reverse proxy for HTTPS. pypiserver can run as a WSGI application, with documented integrations for Docker, nginx, Apache, gunicorn, and Paste. Its default health endpoint returns HTTP 200 when the service is up, and can be configured. The current version supports Python 3.10+ and PyPy3. It is free and open source, with Windows service instructions as well as Linux guidance. Its API covers common package operations rather than the full PyPI API; accepted documentation uploads are not saved to disk.

Good

  • Supports pip, twine, and other packaging clients.
  • Accepts package uploads or scp copies.
  • Supports upload authentication and custom callables.
  • Includes a health endpoint and Docker images.

Watch out

  • Does not implement the full PyPI API.
  • Documentation uploads are not saved to disk.
  • Default directory scanning can slow large collections.
  • Current version requires Python 3.10+ or PyPy3.

Who it suits

It suits people who want to host their own Python package index and use standard packaging tools to upload or install packages. It is a better fit for smaller package collections unless directory caching is configured, since requests scan the package directory by default.

Verdict

pypiserver provides a focused, self-hosted index for Python packages, with several upload methods and basic access protection. Consider its limited API and default directory scanning behavior when planning a larger package collection.

Plans and prices

From pypiserver's own pricing page, checked 10 Oct 2026.

All about pricing
PlanPriceWhat it gives you
pypiserverFreeOpen-source package server; self-hosted; minimal PyPI-compatible API

The facts

Each one read from pypiserver's own pages, with the date it was checked.

What it does

API and servers
Its API returns a WSGI application that can be run with supported or user-chosen WSGI servers.checked 10 Oct 2026
API limit
pypiserver implements only enough of the PyPI API for easy_install, pip install, and search, rather than the full API.checked 9 Oct 2026
Authentication
Uploads can be protected with Apache htpasswd authentication, and API users can configure a custom authentication callable.checked 10 Oct 2026
Clients
Standard Python packaging tools including pip and twine can use it as a package index.checked 9 Oct 2026
Deployment
The project publishes Docker images for main branch pushes and dev, alpha, beta, and final releases.checked 10 Oct 2026
Docker
Official Docker images are built for main pushes and development, prerelease, and final releases.checked 9 Oct 2026
Documentation limitation
It accepts documentation uploads but does not save them to disk.checked 9 Oct 2026
Health checks
It provides a default /health endpoint that returns HTTP 200 when the service is up and supports a configurable endpoint.checked 9 Oct 2026
HTTPS
The documentation recommends putting pypiserver behind a reverse proxy to provide HTTPS.checked 9 Oct 2026
Integrations
The documentation shows integration with pip, easy_install, setuptools, twine, Docker, and reverse proxies including Nginx and Traefik.checked 10 Oct 2026
Intended users
The project describes itself as a self-hosted package index for users who want to serve their own Python packages.checked 9 Oct 2026
License
The project’s remaining code is distributed under the zlib/libpng license, and its bundled Bottle copy is MIT-licensed.checked 10 Oct 2026
Limitations
It does not implement the full PyPI API and documents that it accepts documentation uploads but does not save them to disk.checked 10 Oct 2026
Package formats
It supports wheels, source distributions, eggs, and accompanying PGP signatures.checked 10 Oct 2026
Purpose
pypiserver is a minimal PyPI-compatible server for uploading and downloading Python packages with pip or easy_install.checked 10 Oct 2026
PyPI compatibility
It implements the PyPI interfaces needed for standard packaging tools such as pip and twine to use it as a package index.checked 10 Oct 2026
Python support
The current version works with Python 3.10+ and PyPy3; older Python versions are not tested and the 1.x series is unsupported.checked 10 Oct 2026
Scale limit
The server scans the package directory for each incoming HTTP request by default, which can noticeably slow down service for thousands of packages; directory caching can improve performance.checked 9 Oct 2026
Security guidance
The project strongly advises password-protecting uploads and describes HTTPS deployment through a reverse proxy as the preferred approach.checked 10 Oct 2026
Storage
It serves packages from regular directories and scans package directories recursively.checked 10 Oct 2026
Support
The maintainers direct users to GitHub Discussions and a Zulip community chat, and direct bug reports to GitHub’s bug tracker.checked 10 Oct 2026
Uploading
Packages can be uploaded with pip, setuptools, twine, pypi-uploader, or copied to the server with scp.checked 9 Oct 2026
Upload methods
Packages can be uploaded with pip, setuptools, twine, pypi-uploader, or copied with scp.checked 10 Oct 2026

Where it runs

Platform support
The README includes Windows service instructions using NSSM and systemd service instructions for Linux.checked 10 Oct 2026
The full review of pypiserver

Overview

pypiserver is a self-hosted index for distributing Python packages through familiar tools such as pip and easy_install. It best suits developers and small teams who want to serve their own packages from ordinary directories. Its narrow scope makes it a practical fit for a focused Python index, but not a full-featured package repository.

Key features

The server scans package directories recursively and serves wheels, bdists, eggs, and accompanying PGP signatures. Because packages stay in regular directories, teams can use an existing file-based setup rather than adopting a larger repository system. Standard Python clients, including pip and twine, can use it as a package index.

Publishing options include pip, setuptools, twine, pypi-uploader, and copying files with scp. That range accommodates both automated publishing and direct file transfers. Upload protection can use an Apache htpasswd file; API users can also configure custom authentication callables. The maintainers strongly advise protecting uploads with a password, which is essential to account for when serving private packages.

pypiserver provides a WSGI application and documents deployment with Docker, nginx, Apache, gunicorn, Paste, and other WSGI servers. Official Docker images are built for main pushes and development, prerelease, and final releases. A default /health endpoint returns HTTP 200 when the service is up, and can be configured for deployment needs. For HTTPS, the documentation recommends placing the server behind a reverse proxy.

The API covers the needs of pip installation, easy_install, and package search, not the full PyPI API. It accepts documentation uploads but does not save them to disk. These limits are manageable for straightforward package distribution, but may rule it out when clients or workflows rely on broader PyPI functionality or stored documentation.

Pricing

pypiserver is open-source software with a free plan at no cost. There is no paid tier to weigh against the self-hosting work: teams supply and operate the environment themselves. The remaining code uses the zlib/libpng license, and its bundled Bottle copy is MIT-licensed.

Platforms

It supports Linux, macOS, and Windows, as well as self-hosted deployment and an API. The project includes systemd service instructions for Linux and Windows service instructions using NSSM. Current releases work with Python 3.10+ and PyPy3; older Python versions are untested and unsupported by the current series.

Who it's for

Choose pypiserver when you need a modest, self-managed home for Python packages and value ordinary directory storage and familiar publishing tools. Its narrow PyPI interface and basic upload protection suit focused internal or personal indexes. Look elsewhere if you need a full PyPI API, stored documentation, or a broader artifact repository.

Pros and cons

  • Pro: Several upload routes, including common Python tools and scp, let teams fit publishing into existing workflows.
  • Pro: Directory-backed storage keeps package organization straightforward and serves multiple common Python package formats.
  • Pro: Docker images, WSGI deployment options, and a health endpoint support varied self-hosted operations.
  • Con: The server scans the package directory on each request by default; collections numbering in the thousands can slow service, though directory caching can improve performance.
  • Con: The API is intentionally partial, and uploaded documentation is not retained on disk.
  • Con: Upload security and HTTPS require deployment choices, including password protection and a reverse proxy for HTTPS.

Alternatives

For a public registry aimed at JavaScript packages, consider npm, whose free plan includes unlimited public packages and public registry access. If you want private package and Docker feeds with broader security and compliance features, consider Inedo ProGet; its free edition offers unlimited feeds but has limited security and compliance features.

For other language-specific package ecosystems, LuaRocks, Bioconductor, and CPAN are alternatives. For a public publishing platform that requires a GitHub account to publish a packages.json registry, consider R-universe. For a CLI tool with an HTTP REST service, consider aptly. For an iOS and macOS package manager, consider CocoaPods.

Browse Package Registries and Artifact repository software for more options.

Verdict

pypiserver is a sensible choice for individuals and teams who want a free, self-hosted Python index with direct directory storage and multiple upload paths. Its main appeal is keeping package distribution focused and compatible with standard Python tools. Choose another service if you need the full PyPI API, retained documentation uploads, or a package collection large enough to make default request-time scanning a concern.

Alternatives to pypiserver

All alternatives
  1. 1

    PyPI

    Free planOpen sourceWebAPILinuxmacOS
    8.1Free plan
  2. 2

    Bioconductor

    Free planOpen sourceWebLinuxmacOSSelf-hosted
    7.6Free plan
  3. 3

    npm

    Free planLinuxmacOSWindows
    7.5From $7 a month
  4. 4Inedo ProGet logo

    Inedo ProGet

    Free planWebAPILinuxSelf-hosted
    7.4From $2,395 a year
  5. 5

    GNU ELPA

    Free planOpen sourceWebSelf-hosted
    7.0Free plan
  6. 6

    LuaRocks

    Free planAPILinuxmacOSSelf-hosted
    6.9Free plan