Skip to main content

poopip: for when pip is too slow 💩

Project description

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.

Project details


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.

Supported by

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