PyPI和PIP


PyPI – the Python Package Index – Python包索引,从名字上就可以看出它的作用,如果你需要搜索Python是否有某个功能的实现/现成模块的话就可以去PyPI的官网上搜,安全高效;

PIP – 一个简化安装Python包的工具(The PyPA recommended tool for installing Python packages.),方便至极。

但毕竟PIP是在线安装的方式,安装速度依赖于网络状况,特别是在国内时不时会抽抽风,这时,你就需要了解一下如何设置PIP来帮助避免这种问题了;如果是公司内部使用的话,还推荐用 https://pypi.python.org/pypi/pypiserver 搭建一个简单的pypi服务器,然后在自己的机器上设置一下 ~/.pip/pip.conf 和 ~/.pypirc 就可以愉快的使用了。

==

设置 ~/.pip/pip.conf
[global]
index-url = http://pypi.mirrors.ustc.edu.cn/simple/

=更多的国内PIP源=

https://pypi.python.org/simple/
http://pypi.v2ex.com/simple/
http://pypi.douban.com/simple/
http://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/

然后直接使用pip即可。

设置setuptools的源的方法[编辑 ~/.pydistutils.cfg ]
[easy_install]
index_url = http://pypi.mirrors.ustc.edu.cn/simple/
直接cli指定
$ pip install -i http://pypi.mirrors.ustc.edu.cn/simple Flask

====

查找某个package是否在PIP的源中(pip search package_name)
# pip search --help

Usage:
  pip search [options] <query>

Description:
  Search for PyPI packages whose name or summary contains <query>.

Search Options:
  --index <url>               Base URL of Python Package Index (default https://pypi.python.org/pypi)

General Options:
  -h, --help                  Show help.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output.
  --log-file <path>           Path to a verbose non-appending log, that only logs failures. This log is active by
                              default at /root/.pip/pip.log.
  --log <path>                Path to a verbose appending log. This log is inactive by default.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --timeout <sec>             Set the socket timeout (default 15 seconds).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --cert <path>               Path to alternate CA bundle.

====

往某个pypi服务器上传package
  • 先设置好 ~/.pypirc :
[distutils]
index-servers =
    internal

[internal]
repository: http://localhost:8000/simple/
username: root
password: password
  • 然后用这个方式上传包:
$ python setup.py sdist upload -r internal
参考链接:

=

另:用PIP更新所有已安装的package
, ,

《 “PyPI和PIP” 》 有 7 条评论

  1. 在Linux机器上用get-pip.py文件来安装PIP时经常会出现错误:`
    ReadTimeoutError: HTTPSConnectionPool(host=’pypi.python.org’, port=443): Read timed out.
    `
    几经周折(尝试过一个一个依赖包手工源码安装,但太过曲折就没有继续下去),终于解决(使用`-i, –index-url `选项):
    `
    $ sudo /usr/local/bin/python2.7 get-pip.py -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
    `
    https://pip.pypa.io/en/stable/reference/pip_install/#pip-install-options

  2. Package 钓鱼
    http://blog.fatezero.org/2017/06/01/package-fishing/
    `
    在使用pip安装某些Python模块的时候一定要注意识别模块本身的安全性,最好不要安装那些少见、奇怪的package,否则本意是为了安装package进行安全问题测试/验证,但是最后却被别人的恶意代码利用做了肉鸡。。。
    `

  3. pip ssh-decorate供应链攻击之技术分析
    https://mp.weixin.qq.com/s/E6VK3HRy75WuOAB7kH0BTA
    `
    pip是python的开源包资源库。然而,这个开源库的管理是十分松散的。尤其在安全方面并没有严格的审核机制。一个用户只需要一个email即可注册账户,然后即可上传其源文件到pip资源中。而这个pip资源是被世界上所有python用户使用下载的。如果有人夹杂恶意代码上传了某个包,并以常见程序的名字命名,比如zip,ssh,smb,ftp。那么当有用户尝试搜索并下载使用这个名字的包时,这个用户就会中招,可谓神不知鬼不觉。这就是存在于pip中的供应链安全问题。回头看,针对pip的攻击已经并不新鲜,早在几年前就有国外研究者进行过类似实验。而真正让大家重视起来是在2017年,国内白帽子也针对pip源进行了投毒测试,结果令人震惊,各大厂商主机纷纷被感染。但是无论如何,之前我们看到的全部都是以渗透测试为目的的pip污染事件,而这次,我们看到的真正的backdoor!
    `
    Backdoor in ssh-decorator package
    https://www.reddit.com/r/Python/comments/8hvzja/backdoor_in_sshdecorator_package/
    https://news.ycombinator.com/item?id=17025863

  4. 【通知】腾讯洋葱反入侵系统检测到多例恶意Python库供应链投毒
    https://mp.weixin.qq.com/s/TT9zVrGKpcd11aOI3WkL7g
    `
    软件供应链投毒因其隐蔽性、易扩散性等特征,一直是今年APT攻击的主要手法之一。众多攻击者发布恶意Python库进行投毒污染,进而控制用户电脑,影响范围广泛。

    近日,腾讯洋葱反入侵系统检测发现,多个国内开源镜像站存在”jeIlyfish”、”libpeshnx”、”trustypip”、”pwniepip”等多款python恶意库。
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注