Search code examples
pythonpippackagepypipypiserver

what does pip install actually do?


What does pip install actually do?

Assuming the pypi package is a tarball,

Does it just download the tar.gz, unpack it and run setup.py?

Does it add the downloaded package to the site_packages folder?

I want to create a pip installable package using pypiserver so my colleagues can download my package in a painless way, but am a little unsure exactly what to include beyond the actual .py scripts.


Solution

  • The tar.gz file is a source archive whereas the .whl file is a built distribution. Newer pip versions preferentially install built distributions, but will fall back to source archives if needed. You should always upload a source archive and provide built archives for the platforms your project is compatible with. In this case, our example package is compatible with Python on any platform so only one built distribution is needed.

    See: https://packaging.python.org/tutorials/packaging-projects/

    You would typically not manually create the source archive and wheel, but use setuptools and wheel to do so for you.

    Nowadays, many packages are wheels. While installing these wheels using pip, pip will:

    [...] unpack the archive in your current site packages directory and install any console scripts contained in the wheel.

    See: https://wheel.readthedocs.io/en/stable/user_guide.html#installing-wheels