chris taylor
chris taylor

Reputation: 13

when I run 'pip install something' where is pip fetching this something from?

I know there is like a package directory on pypi, im curious to know where is the file that configures pip to look for the packages on pypi specifically. Im trying to understand the very basics of it, any related information would help.

Upvotes: 1

Views: 362

Answers (2)

Amit Naidu
Amit Naidu

Reputation: 2638

I had the same question about the default package index. We can certainly override it in the pip.ini file or on the command line with the --index-url option, but that doesn't explain where the pypi.org default is configured.

So I went to the source-code, and it turns out that it is hard-coded in there. I see it in at least two active source files:

This commit where the default was changed in 2018. It shows many other test and documentation files that have it hard-coded.

Upvotes: 0

frankegoesdown
frankegoesdown

Reputation: 1924

https://pip.pypa.io/en/stable/user_guide/#configuration

pip allows you to set all command line option defaults in a standard ini style config file.

The names and locations of the configuration files vary slightly across platforms. You may have per-user, per-virtualenv or site-wide (shared amongst all users) configuration:

Per-user:

    On Unix the default configuration file is: $HOME/.config/pip/pip.conf which respects the XDG_CONFIG_HOME environment variable.
    On macOS the configuration file is $HOME/Library/Application Support/pip/pip.conf if directory $HOME/Library/Application Support/pip exists else $HOME/.config/pip/pip.conf.
    On Windows the configuration file is %APPDATA%\pip\pip.ini.

There are also a legacy per-user configuration file which is also respected, these are located at:

    On Unix and macOS the configuration file is: $HOME/.pip/pip.conf
    On Windows the configuration file is: %HOME%\pip\pip.ini

You can set a custom path location for this config file using the environment variable PIP_CONFIG_FILE.

Inside a virtualenv:

    On Unix and macOS the file is $VIRTUAL_ENV/pip.conf
    On Windows the file is: %VIRTUAL_ENV%\pip.ini

Site-wide:

    On Unix the file may be located in /etc/pip.conf. Alternatively it may be in a “pip” subdirectory of any of the paths set in the environment variable XDG_CONFIG_DIRS (if it exists), for example /etc/xdg/pip/pip.conf.
    On macOS the file is: /Library/Application Support/pip/pip.conf
    On Windows XP the file is: C:\Documents and Settings\All Users\Application Data\pip\pip.ini
    On Windows 7 and later the file is hidden, but writeable at C:\ProgramData\pip\pip.ini
    Site-wide configuration is not supported on Windows Vista

If multiple configuration files are found by pip then they are combined in the following order:

    The site-wide file is read
    The per-user file is read
    The virtualenv-specific file is read

Upvotes: 1

Related Questions