Skip to main content

poopip: for when pip is too slow 💩

poopip is a tiny python package installer/uninstaller designed for working on local (i.e. already in your filesystem) pure python packages

poopip has very few features, but this makes it fast! 🔥

get poopip

assuming you have your favorite virtual environemnt already set up, you can run

pip install poopip

or else you can clone this repo and issue

python poopip/poopip.py install poopip/

usage

for some/path/to/a/package the following should work:

# install to our current environment
poop install some/path/to/a/thing
# install globally for current user
poop --user install some/path/to/a/thing
# install in "editable" mode
poop install -e some/path/to/a/thing
# uninstall package from current environment
poop uninstall thing
# uninstall user's global package
poop --user uninstall thing

generally poopip will take the name of the directory as the name of the package and assume the code is either at thing/thing.py, or a directory thing/thing/ - it's on our todo list to read the pyproject.toml for this.

goals

  • fast: aims to be the fastest step in your dev/ci process
  • small: single file under 1000 lines of code
  • portable: pure python, zero dependencies
  • readable: reading the source code will tell you something about how installs work

On the portability front, currently poopip only officially supports linux - contributions are welcome.

non-goals

  • requirements: poopip doesn't care about your package's requirements, just use a requirements file and install them yourself
  • pypa specifications: poopip doesn't aim to implement all of the specifications where they conflict with its goals
  • setup.py: we have no intention of supporting setup.py or even dynamic pyproject fields

Note that while poopip understands and can update or uninstall pip-installed packages the converse is not true. The reason is that poopip's metadata operates at the directory level, whereas pip relies upon a list of individual files - creating this list is slow with large packages, so we don't do it. Use poopip to unistall poopip-installed packages.

benchmarks

Here's how long it takes to install poopip itself (a zero-dependency, single python file) with various tools. In the regular old install case, poopip is up to 300x faster than pip!

interpreter command time
pypy3.10 pip install --no-deps . 5.645s
pypy3.10 pip install --no-deps -e . 5.983s
pypy3.10 flit install --deps none 6.143s
pypy3.10 flit install -s --deps none 0.415s
pypy3.10 python poopip.py install . 0.136s
pypy3.10 python poopip.py install -e . 0.116s
python3.11 pip install --no-deps . 1.981s
python3.11 pip install --no-deps -e . 1.920s
python3.11 flit install --deps none 2.008s
python3.11 flit install -s --deps none 0.183s
python3.11 python poopip install . 0.061s
python3.11 python poopip install -e . 0.075s

Flit's not really a package manager, but it is much faster than pip if we use symlinks (flit install -s --deps none), so if you're after a good dev experience and only want to install in editable mode I would highly recomend it as a more sane option.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

poopip-0.2.2.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

poopip-0.2.2-py2.py3-none-any.whl (8.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file poopip-0.2.2.tar.gz.

File metadata

  • Download URL: poopip-0.2.2.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for poopip-0.2.2.tar.gz
Algorithm Hash digest
SHA256 0137afe44e1db492d7284c41242fb845505cb54fe82cf33ff1b0f4a592628229
MD5 dd396f9851d215f982c75420f3c9e82d
BLAKE2b-256 9f983f80a6d064dbba017b7d14c8653b6d854c7b12625e216fe1d50af4de3a67

See more details on using hashes here.

File details

Details for the file poopip-0.2.2-py2.py3-none-any.whl.

File metadata

  • Download URL: poopip-0.2.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for poopip-0.2.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7b65bdd73bad2b16e799fd3505cbace6a391eaad1e487a87b0d0aa7a2caff702
MD5 2ecbf25664d6d7dac11f727d04ff1a6d
BLAKE2b-256 d7246088c5292496c8fb5ff906a4bbf66a3b75de7c0c67a5bf8718334e656fc0

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page