[python]pip换源详解

前言

‍

现有的各个网站上的pip换源方式,很零散,或者是很单调的重复,又或者只是给出命令,尽管这通常就够用了。

但是,我希望汇总一下,然后再结合pip的官方文档来做一些补充。

因为,换源是一个很基础的操作,很多操作,久了不用的话,也很容易忘,所以总结一下,也是很有意义的。

目前本文章仅仅涉及Windows​环境下的操作,暂未包括其他系统下的换源操作。

‍


‍

目录

‍

@

‍


‍

了解pip配置文件

‍

配置文件

‍

  • ​global​:系统范围的配置文件,在用户之间共享
  • ​user​:每个用户的配置文件
  • ​site​:每个环境的配置文件,i.e. per-virtualenv​

‍


‍

对应级别的配置文件在对应的系统的所在路径

‍

Windows:

‍

  • ​Global​

    • 在Windows 7 及以上版本:(隐藏但可写)C:\ProgramData\pip\pip.ini​
    • Windows Vista:不支持全局配置
    • Windows XP:C:\Documents and Settings\All Users\Application Data\pip\pip.ini​
  • ​User​(笔者试验后只有此文件)

    • ​%APPDATA%\pip\pip.ini​
    • ​C:\Users\Administrator\AppData\Roaming\pip\pip.ini​
    • 还会加载旧版“每个用户”的配置文件(如果存在):%HOME%\pip\pip.ini​
  • ​Site​

    • ​%VIRTUAL_ENV%\pip.ini​
  • ​PIP_CONFIG_FILE​

    • 环境变量可以指定最后加载的配置文件,其值将覆盖上述文件中设置的值。
    • 在os.devnull​中设置它,可以禁用所有的配置文件,如果设置的位置已经存在该文件,用户的配置文件不会被加载

‍


‍

配置文件加载顺序

‍

如果pip找到多个配置文件,pip会按照下面的次序加载它们:

‍

  • Global
  • User
  • Site
  • ​PIP_CONFIG_FILE​, 如果存在该文件

‍

每次加载配置文件,都会覆盖从之前加载的文件中读取的任何值,例如,在全局(global)设置中和用户(User)设置中,如果都设置了timeout​的数值,那么pip会使用后者(User)的值。

‍


命令选项配置

‍

配置文件内的命名都派生于命令行长选项。

比如,如果你想使用一个不同的包索引--index-url​,并且将HTTP​超时设置为60秒--default-timeout​,那么你的配置文件将如下所示:

‍

[global]
timeout = 60
index-url = https://download.zope.org/ppix

‍

每个子命令都可以在其自己的部分中选择配置,而这将会覆盖具有相同名称的全局设置。

例如,如果你在运行pip freeze​时希望减少秒数为10秒,并且为所有其他的命令使用减少后的秒数:

‍

[global]
timeout = 60 [freeze]
timeout = 10

‍

对于布尔选项的设置,如--ignore-installed​ 或者 --no-dependencies​可以像这样设置:

‍

[install]
ignore-installed = true
no-dependencies = yes

‍

如果要启用布尔选项--no-compile​, --no-warn-script-location​ 和 --no-cache-dir​必须使用假值(false​|no​):

‍

[global]
no-cache-dir = false [install]
no-compile = no
no-warn-script-location = false

‍

可重复选项的选项,如--verbose​ 和 --quiet​,一个非负整数可以被用来代表被指定的级别:

‍

[global]
quiet = 0
verbose = 2

‍

给在配置文件里的部分添加值时有可能的。给可以被写在多行中的选项如--find-links​ 或者 --trusted-host​添加数值是被允许的。

这就使得用户能够按照命令行参数加入的顺序附加参数。

‍

[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

‍

可以使用格式化的PIP_<UPPER_LONG_NAME>​来设置pip命令行选项的环境变量,破折号-​必须被下划线_​替代:

‍

  • ​PIP_DEFAULT_TIMEOUT=60​ 等同于 --default-timeout=60​

  • ​PIP_FIND_LINKS="http://mirror1.example.com http://mirror2.example.com"​ 等同于 --find-links=http://mirror1.example.com --find-links=http://mirror2.example.com​

  • 没有数值的可重复选项(例如--verbose​ )可以通过使用重复的数值来指定数值

    ​PIP_VERBOSE=3​ 等同于 pip install -vvv​

    注意:

    设置空字串的环境变量不能被视为假值,使用no​,false​,0​来替代

‍

命令行选项覆盖环境变量,环境变量覆盖配置文件中的值。在配置文件中,命令特定部分的值覆盖全局部分的值。

‍

  • ​--host=foo​ 覆盖 PIP_HOST=foo​
  • ​PIP_HOST=foo​ 覆盖配置文件中的 [global] host = foo​
  • 在配置文件中的一个命令的特定部分 [<command>] host = bar​ 覆盖在配置文件部分[global]​ 中的同名选项.

‍


‍

配置方式

‍

法一:直接打开配置文件进行编辑

‍

直接打开%APPDATA%\pip\pip.ini​(C:\Users\Administrator\AppData\Roaming\pip\pip.ini​),然后对其进行编辑。

‍

​-i​,--index-url <url>​ :

Python包索引的基本URL(默认为https://pypi.org/simple)。这应该指向符合PEP 503(简单存储库API)的存储库或以相同格式布局的本地目录。

​--extra-index-url <url>​:

除了--index-url​之外要使用的包索引的额外url。应该遵循与--index-url​相同的规则。

​-f​,--find-links <url>​:

如果是html文件的URL或路径,那么解析到归档文件的链接,例如sdist (.tar.gz)或wheel (.whl)文件。如果本地路径或file:// URL是一个目录,那么在目录列表中查找存档。不支持VCS项目url的链接。

​--trusted-host <hostname>​:

将此主机或(主机:端口)标记为受信任,即使它是无效的链接或任何HTTPS。

根据前面的命令选项配置部分,我们可以在配置文件里设置参数(包索引的基本URL和包索引的额外URL)的数值,从而实现换源。

‍

示例为pip多源配置:

‍

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
extra-index-url =
https://pypi.mirrors.ustc.edu.cn/simple/
http://pypi.douban.com/simple/
https://pypi.tuna.tsinghua.edu.cn/simple/
http://pypi.mirrors.ustc.edu.cn/simple/
https://pypi.org/simple
[install]
trusted-host=
mirrors.aliyun.com
pypi.mirrors.aliyun.com
pypi.douban.com
pypi.tuna.tsinghua.edu.cn
pypi.mirrors.ustc.edu.cn

‍

法二:通过命令设置

‍

使用pip config set​命令,直接设置相关命令选项的数值

‍

py -m pip config [<file-option>] list
py -m pip config [<file-option>] [--editor <editor-path>] edit
py -m pip config [<file-option>] get command.option
py -m pip config [<file-option>] set command.option value
py -m pip config [<file-option>] unset command.option
py -m pip config [<file-option>] debug

‍

  • list:列出活动的配置(或者从指定的文件)
  • edit:在编辑器里面编辑配置文件
  • get:获得和命令选项相关的数值
  • set:设置命令选项的数值
  • unset:取消设置命令选项的数值
  • debug:列出配置文件和在它们中定义的数值

‍

  • pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple​:

    设置配置文件global​的index-url​的数值为https://pypi.tuna.tsinghua.edu.cn/simple​

    也就是,设置你的Python包索引的基本URL为https://pypi.tuna.tsinghua.edu.cn/simple​

    这也就是我们常说的换源操作。

  • ​pip config set global.extra-index-url "<url1> <url2>..."​:

    如果说,你想要设置备用源的话(其他几个国内镜像源,以及以防万一的,默认的源https://pypi.org/simple),那么你需要这个命令。

    其中<url1>​和<url2>​指的是你需要设置的备用源的URL地址,它们之间需要用空格隔开。

    这也就是我们设置的多个备用源的操作

  • ​pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn​:

    这条命令的作用在前面提到过,标记主机或者主机:端口为信任。

    当你选用了非默认源后,似乎通常需要设置非默认源为信任。

    如果不设置会怎样,笔者暂时未尝试过。

‍

参考资料

‍

‍

[python]pip换源详解的更多相关文章

  1. Python pip换源

    前言 哈喽呀,小伙伴们,晚上好呀,今天要给大家带来点什么呐,我们就来说说python的pip换源吧,这个换源,相对来说,还是比较重要的,能少生好几次气的,哈哈哈 为什么要换源 我们搞python的,肯 ...

  2. python pip 换源

    title: pip 换源 author: 杨晓东 permalink: pip-换源 date: 2021-10-02 11:27:04 categories: - 投篮 tags: - demo ...

  3. [Python]Pip换源以及设置代理

    Install python package with proxy sudo pip install python-magic --proxy=https://your-proxy.com 2.No ...

  4. python pip换源方法

    以下资料来源于网络: pip国内的一些镜像   阿里云 http://mirrors.aliyun.com/pypi/simple/   中国科技大学 https://pypi.mirrors.ust ...

  5. python虚拟环境 + 批量pip + 换源

    python虚拟环境 + 批量pip + 换源 虚拟环境 曾经我是一个小白,不管运行什么项目都用一个环境,后来项目多了,有的是Django1.11的有的是Django2的,有的项目只能在3.6上运行, ...

  6. pip安装使用详解【转】

    转自:pip安装使用详解 – 运维生存时间http://www.ttlsa.com/python/how-to-install-and-use-pip-ttlsa/ pip类似RedHat里面的yum ...

  7. python之OS模块详解

    python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...

  8. Python对Excel操作详解

      Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl   ...

  9. Python的logging模块详解

          Python的logging模块详解 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志级别 日志级别指的是产生的日志的事件的严重程度. 设置一个级别后,严重程度 ...

  10. Python解释器换源

    Python解释器换源 """ 1.采用国内源,加速下载模块的速度 2.常用pip源: -- 豆瓣:https://pypi.douban.com/simple -- 阿 ...

随机推荐

  1. Qt编写视频监控系统76-Onvif跨网段组播搜索和单播搜索的实现

    一.前言 在视频监控行业一般会用国际onvif工具来测试设备是否支持onvif协议,工具的名字叫ONVIF Device Manager(还有个工具叫ONVIF Device Test Tool,专用 ...

  2. Qt编写物联网管理平台32-表格数据

    一.前言 用表格来展示采集到的数据,是很多组态系统中最常见的方法,一个表格能够展示的数据特别多,在本系统中,默认做的也是通过表格的形式来展示数据,目前是将所有的设备放在一个表格中,后期可能按照不同控制 ...

  3. 即时通讯技术文集(第34期):IM群聊技术合集(Part1) [共15篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第34 期. [- 1 -] 快速裂变:见证微信强大后台架构从0到1的演进历程(一) [链接]  ...

  4. IM技术分享:万人群聊消息投递方案的思考和实践

    本文由融云技术团队原创分享,原题"技术实践丨万人群聊的消息分发控速方案",为使文章更好理解,内容有修订. 1.引言 传统意义上的IM群聊,通常都是像微信这样的500人群,或者QQ的 ...

  5. 基于Netty,从零开发IM(四):编码实践篇(系统优化)

    本文由作者"大白菜"分享,有较多修订和改动.注意:本系列是给IM初学者的文章,IM老油条们还望海涵,勿喷! 1.引言 前两篇<编码实践篇(单聊功能)>.<编码实践 ...

  6. uniapp请求封装-token无感刷新

    当前是vue3+ts版本的封装 vue3+js版本请求封装可参考 https://www.cnblogs.com/lovejielive/p/14343619.html token无感刷新,可自行删除 ...

  7. KES(KingBaseES)集群部署实战

    今天我们将探讨关于KES(KingBaseES)的集群部署方案.作为示例,我们将以读写分离(RWC)集群为例,快速在本地进行部署和安装,并深入了解KES的部署流程.在本章中,我们将采用Windows平 ...

  8. 使用Docker部署的基于binlog实现Mysql8

    概念 MySQL 基于 Binlog 的主从复制(Master-Slave Replication)是 MySQL 数据库中实现数据复制的一种机制.在这种复制模式下,主库(Master)记录所有对数据 ...

  9. 第六章 dubbo源码解析目录

    13.1 dubbo服务降级源码解析 从 9.1 客户端发起请求源码 的客户端请求总体流程图中,截取部分如下: //代理发出请求 proxy0.sayHello(String paramString) ...

  10. 6种@Transactional注解的失效场景

    一.事务 事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种. 编程式事务:是指在代码中手动的管理事务的提交.回滚等操作,代码侵入性比较强, ...