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
参考链接:
- Virtualenv和pip小探 | 笔记本
- Python的virtualenv和pip
- 使用国内镜像源来加速python pypi包的安装
- pypiserver : Python Package Index
- https://pip.pypa.io/en/latest/user_guide.html#configuration
- https://docs.python.org/2/distutils/packageindex.html #官方文档
- 搭建私有的 python 包发布中心 pypi
=
《 “PyPI和PIP” 》 有 7 条评论
`
mkdir -p ~/.pip/ && echo “[global]
index-url = https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
“> ~/.pip/pip.conf
echo “[easy_install]
index_url = https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
” > ~/.pydistutils.cfg
sudo pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple Django==1.8.16
`
在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
Package 钓鱼
http://blog.fatezero.org/2017/06/01/package-fishing/
`
在使用pip安装某些Python模块的时候一定要注意识别模块本身的安全性,最好不要安装那些少见、奇怪的package,否则本意是为了安装package进行安全问题测试/验证,但是最后却被别人的恶意代码利用做了肉鸡。。。
`
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
0wned -通过Python安装包执行代码
https://github.com/mschwager/0wned
【通知】腾讯洋葱反入侵系统检测到多例恶意Python库供应链投毒
https://mp.weixin.qq.com/s/TT9zVrGKpcd11aOI3WkL7g
`
软件供应链投毒因其隐蔽性、易扩散性等特征,一直是今年APT攻击的主要手法之一。众多攻击者发布恶意Python库进行投毒污染,进而控制用户电脑,影响范围广泛。
近日,腾讯洋葱反入侵系统检测发现,多个国内开源镜像站存在”jeIlyfish”、”libpeshnx”、”trustypip”、”pwniepip”等多款python恶意库。
`
macos python3.9 ModuleNotFoundError: No module named ‘pip’
“python 3.9 no module named pip” Code Answer’s
https://www.codegrepper.com/code-examples/whatever/python+3.9+no+module+named+pip
`
python3 -m ensurepip
`
ImportError: No module named pip
https://stackoverflow.com/questions/18363022/importerror-no-module-named-pip
pip3使用异常? No module named pip?
https://www.zhihu.com/question/56927648