pypa / pypa/packaging.python.org
document how a python project should document installing itself
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:
- the user doesn't have a C compiler, but the project has a C extension
- the user doesn't have the right version of a C compiler (for example: matching up Windows compiler versions to Python versions)
- 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)
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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