Search code examples
pythonubuntupip

Which PyPI index does Pip point to?


Ubuntu 20.04.1 LTS | Python 3.8.5 | Pip 20.0.2 (via python3-pip)

I accidentally overwrote the global PyPI index in my laptop with a custom index. (It was meant to be set only within a virtual environment. In case it's useful, I was using AWS CodeArtifact.)

I say this after running pip3 config -v list and seeing global.index-url assigned the other URL as well as ~/.config/.pip/pip.conf listing the same.

In an attempt to set things right, I did the following:

  1. Set pip3's global.index-url to "https://pypi.python.org/pypi", but when I did a test to see if it worked, it stopped halfway while trying to install requests in a virtual environment (using its pip) and said some dependencies were not satisfied.

  2. I then moved ~/.config/.pip to a backup, uninstalled python3-pip and reinstalled the package in the hope that the config would be written anew. While a new ~/config/.pip was not created, I was able to install requests into the virtual environment without any issue.

My confusion stems from the fact that I don't know where pip is picking things up from. None of the files listed below exist!

$ pip config -v list
For variant 'global', will try loading '/etc/xdg/xdg-ubuntu/pip/pip.conf'
For variant 'global', will try loading '/etc/xdg/pip/pip.conf'
For variant 'user', will try loading '/home/<user>/.pip/pip.conf'
For variant 'user', will try loading '/home/<user>/.config/pip/pip.conf'
For variant 'site', will try loading '/home/<user>/test_env/venv/pip.conf'

The output is slightly different when I use pip3 with the virtual environment deactivated.

$ pip3 config -v list
For variant 'global', will try loading '/etc/xdg/xdg-ubuntu/pip/pip.conf'
For variant 'global', will try loading '/etc/xdg/pip/pip.conf'
For variant 'user', will try loading '/home/<user>/.pip/pip.conf'
For variant 'user', will try loading '/home/<user>/.config/pip/pip.conf'
For variant 'site', will try loading '/usr/pip.conf'

Could someone please tell me how this all works?


Solution

  • https://pypi.org/simple/ packageX

    let me know if its right ?

    using

        pip install paxckageX --verbose
    
    

    not sure its right nowadays but here:

    Python can't find the file pip.conf

    and here

    pip user guide Configuration :

    Configuration
    Config file
    
    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 global (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 is also a legacy per-user configuration file which is also respected. To find its location:
    
        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
    
    Global:
    
        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
    
        Global configuration is not supported on Windows Vista.
    
    The global configuration file is shared by all Python installations.
    
    If multiple configuration files are found by pip then they are combined in the following order:
    
        The global file is read
    
        The per-user file is read
    
        The virtualenv-specific file is read
    
    Each file read overrides any values read from previous files, so if the global timeout is specified in both the global file and the per-user file then the latter value will be used.
    
    The names of the settings are derived from the long command line option, e.g. if you want to use a different package index (--index-url) and set the HTTP timeout (--default-timeout) to 60 seconds your config file would look like this:
    
    [global]
    timeout = 60
    index-url = https://download.zope.org/ppix
    
    Each subcommand can be configured optionally in its own section so that every global setting with the same name will be overridden; e.g. decreasing the timeout to 10 seconds when running the freeze (pip freeze) command and using 60 seconds for all other commands is possible with:
    
    [global]
    timeout = 60
    
    [freeze]
    timeout = 10
    
    Boolean options like --ignore-installed or --no-dependencies can be set like this:
    
    [install]
    ignore-installed = true
    no-dependencies = yes
    
    To enable the boolean options --no-compile, --no-warn-script-location and --no-cache-dir, falsy values have to be used:
    
    [global]
    no-cache-dir = false
    
    [install]
    no-compile = no
    no-warn-script-location = false
    
    For options which can be repeated like --verbose and --quiet, a non-negative integer can be used to represent the level to be specified:
    
    [global]
    quiet = 0
    verbose = 2
    
    It is possible to append values to a section within a configuration file such as the pip.ini file. This is applicable to appending options like --find-links or --trusted-host, which can be written on multiple lines:
    
    [global]
    find-links =
        http://download.example.com
    
    [install]
    find-links =
        http://mirror1.example.com
        http://mirror2.example.com
    
    trusted-host =
        mirror1.example.com
        mirror2.example.com
    
    This enables users to add additional values in the order of entry for such command line arguments.
    Environment Variables
    
    pip’s command line options can be set with environment variables using the format PIP_<UPPER_LONG_NAME> . Dashes (-) have to be replaced with underscores (_).
    
    For example, to set the default timeout:
    Unix/macOS
    
    export PIP_DEFAULT_TIMEOUT=60
    
    Windows
    
    This is the same as passing the option to pip directly:
    Unix/macOS
    
    python -m pip --default-timeout=60 [...]
    
    Windows
    
    For command line options which can be repeated, use a space to separate multiple values. For example:
    Unix/macOS
    
    export PIP_FIND_LINKS="http://mirror1.example.com http://mirror2.example.com"
    
    Windows
    
    is the same as calling:
    Unix/macOS
    
    python -m pip install --find-links=http://mirror1.example.com --find-links=http://mirror2.example.com
    
    Windows
    
    Options that do not take a value, but can be repeated (such as --verbose) can be specified using the number of repetitions, so:
    
    export PIP_VERBOSE=3
    
    is the same as calling:
    
    pip install -vvv
    
    Note
    
    Environment variables set to be empty string will not be treated as false. Please use no, false or 0 instead.
    Config Precedence
    
    Command line options have precedence over environment variables, which have precedence over the config file.
    
    Within the config file, command specific sections have precedence over the global section.
    
    Examples:
    
        --host=foo overrides PIP_HOST=foo
    
        PIP_HOST=foo overrides a config file with [global] host = foo
    
        A command specific section in the config file [<command>] host = bar overrides the option with same name in the [global] config file section