pypa / pypa/packaging.python.org

document how a python project should document installing itself

Open
#131 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.7k
Forks
1.7k
Avg merge
3d 12h
Merged PRs (30d)
4

Description

Right now, many many projects on PyPI document their install process as sudo pip install. This is (obviously, I hope) suboptimal.

How should projects document their installation process? It's tempting to say "just pip install", but this falls apart if:

  1. the user doesn't have a C compiler, but the project has a C extension
  2. the user doesn't have the right version of a C compiler (for example: matching up Windows compiler versions to Python versions)
  3. the project has native dependencies outside their platform's base installation package (libffi, libssl, libcrypto being popular ones, but more esoteric libraries like gtk, libpng, imagemagick, and so on also cause interesting issues)
  4. the user isn't root, doesn't have an awesome pip configuration and doesn't know about virtualenv

There's also the issue that if you use platform packages, you get automatic security updates (at least sometimes) but there doesn't appear to be any generally acknowledged "best practices" for getting security updates with pip. There isn't even any standard security-update-notification mechanism I'm aware of. Is it even possible to get PyPI to send you an email when new versions of a thing are released?

However, putting a dissertation into every project's documentation about how to install pip, virtualenv, apt, yum, nuget, homebrew, ebuild, nix, and seven other package managers is unlikely to result in a positive user experience.

Getting to the point where projects no longer have mutually contradictory documentation that provides a good experience is likely to be a long slog, but it seems like this guide should provide a starting point that projects can begin linking to so that users can get some quickstart instructions which work almost all of the time, and can have a good central reading list for understanding the subtleties associated with different ways that packages can be installed.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the installation scenarios listed in the issue, including compilers, native dependencies, non-root users, virtualenv, platform packages, and security updates. Use the linked pip configuration resource and the issue's proposed central reading list as context. Done means producing an agreed guide with practical quickstart instructions and clear guidance on the installation and update tradeoffs.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
documentation
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.