Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
425 views
in Technique[技术] by (71.8m points)

python - 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?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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%pippip.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%pippip.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 SettingsAll UsersApplication Datapippip.ini

    On Windows 7 and later the file is hidden, but writeable at C:ProgramDatapippip.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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...