精华内容
下载资源
问答
  • 文/图 阿里安全猎户座实验室近日,国外媒体有安全人员爆出Python pip ssh-decorate被发现存在后门代码!对,又是pip污染。pippython的开源包资源库。然而,这个开源库的管理是十分松散的。尤其在安全方面并没有...

    文/图 阿里安全猎户座实验室

    近日,国外媒体有安全人员爆出Python pip ssh-decorate被发现存在后门代码!对,又是pip污染。

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

    ssh-decorate是一个github开源项目,其地址:https://github/urigoren/ssh_decorate。其功能应该是实现类似ssh client一样的功能,python实现,提供一些更友好的接口。现在这个工程已经被原作者删除干净,只有google cache中的可以看一下其之前的内容。在pypi上的ssh_decorate的地址是:https://pypi.org/project/ssh-decorate。当前的恶意包也已经被pypi移除,目前页面也无法找到了。

    这个backdoor的事件最早被爆出是reddit上的用户发帖,并且贴出了恶意代码片段,如图1所示。从图中可以看出,恶意代码的实现是比较直接的,没有代码加密、混淆之类的对抗手段。主要的动作就是发送ssh服务器的用户名,密码,ip地址,端口,私钥信息到远程服务器。服务器地址:http://ssh-decorate.cf/index.php。这其中的很重要一点就是其收集了密码和私钥信息。有了这些信息,相当于盗取了ssh服务器的账户。再看这个攻击者的服务器网址,可见域名还是有很大迷惑性的,使用ssh-decorate字符串。另外,有安全研究人员通过其DNS Record系统发现这个域名注册时间是2018-05-08。也就是这次攻击这个域名的存活期,其实还比较短。

    图1

    那么,一个很重要的问题:这个pip的恶意包到底是怎么来的呢?实际上ssh-decorate这个开源包存在github和pypi都已经很久了,作者是urigoren。那么,为什么这个pypi上的包被插入了恶意代码了呢?原作者没必要这么做。终于,通过github的一个issue我们发现了原因。这个issue是一个发现恶意代码的用户质问开发者urigoren,为什么其pypi源中包含有恶意代码。这个issue已经被删除,但是可以从cache链接https://webcache.googleusercontent/search?q=cache:vjUIkPX1-0EJ:https://github/urigoren/ssh_decorator/issues/11+&cd=6&hl=zh-CN&ct=clnk 查看,同时,图2,图3是也是来源于这个issue的讨论的截图。

    图2

    图3

    通过对话,我们得出推测:urigoren的pypi账号很可能被黑了。这样导致,攻击者利用他的账号就可以push更新包到pypi,这就造成了github是好的代码,但是pypi的包已经被污染。经过这个事情,urigoren一气之下(也许是惊吓)删除了github和pypi的所有相关repo。对于这个情况,Pypi之前已经我们提过,其安全很脆弱,其账户体系也是一样的。当然,到底是原作者使用弱密码还是pypi有其他弱点来让攻击者达到最后盗取其账户,这个我们暂时不得而知。但是,这是一种巧妙的攻击方式。黑掉一个缺乏安全意识的开发者的账户并不那么复杂,而这个开发者的背后可能掌管着世界级的开源应用的代码更新权限。这又是一个相对低成本的攻击。

    通过对这个真实的供应链安全问题的分享,希望提高大家对这类安全问题的感知。供应链安全是个复杂而庞大的问题。需要不断地去重视,思考,一步一步地去解决。出于对近几年来供应链安全问题的重视,为了促进安全行业内相关方向的发展以及对此类攻击解法的探索,阿里巴巴安全部在今年专门举办了一届“软件供应链安全大赛”,赛事目前正在紧张进行中,测试赛即将打响,有兴趣的同学请移步官方网站(https://softsec.security.alibaba)了解更多信息,现在加入PK还来得及!

    展开全文
  • 这允许Python用户有效地共享和协作,从其他人已经创建的解决方案受益于常见(有时甚至是罕见的)问题,以及可以提供他们自己的解决方案。本指南涵盖了分发部分的流程。有关安装其他Python项目的指南,请参阅 安装...

    安装 Python 模块¶

    作为一个流行的开源开发项目,Python拥有一个活跃的贡献者和用户支持社区,这些社区也可以让他们的软件可供其他Python开发人员在开源许可条款下使用。

    这允许Python用户有效地共享和协作,从其他人已经创建的解决方案中受益于常见(有时甚至是罕见的)问题,以及可以提供他们自己的解决方案。

    本指南涵盖了分发部分的流程。有关安装其他Python项目的指南,请参阅 安装指南。

    注解

    对于企业和其他机构用户,请注意许多组织都有自己的政策来使用和贡献开源软件。在使用Python提供的分发和安装工具时,请考虑这些政策。

    关键术语¶

    pip 是首选的安装程序。从Python 3.4开始,它默认包含在Python二进制安装程序中。

    virtual environment 是一种半隔离的 Python 环境,允许为特定的应用安装各自的包,而不是安装到整个系统。

    venv 是创建虚拟环境的标准工具,从 Python 3.3 开始成为 Python 的组成部分。 从 Python 3.4 开始,它会默认安装 pip 到所创建的全部虚拟环境。

    virtualenv 是 venv 的第三方替代(及其前身)。 它允许在 Python 3.4 之前的版本中使用虚拟环境,那些版本或是完全不提供 venv,或是不会自动安装 pip 到所创建的虚拟环境。

    Python Packaging Index 是一个由 Python 用户向其他用户发布开源许可软件包的公共仓库。

    Python Packaging Authority 是负责标准打包工具以及相关元数据和文件格式标准维护与改进的开发人员和文档作者团队。 他们基于 GitHub 和 Bitbucket 这两个平台维护着各种工具、文档和问题追踪系统。

    distutils 是最初的构建和分发系统,于 1998 年首次加入 Python 标准库。 虽然直接使用 distutils 的方式已被淘汰,它仍然是当前打包和分发架构的基础,而且它不仅仍然是标准库的一部分,这个名称还以其他方式存在(例如用于协调 Python 打包标准开发流程的邮件列表就以此命名)。

    在 3.5 版更改:现在推荐使用 venv 来创建虚拟环境。

    基本使用¶

    标准打包工具完全是针对命令行使用方式来设计的。

    以下命令将从 Python Packaging Index 安装一个模块的最新版本及其依赖项:

    python -m pip install SomePackage

    注解

    对于 POSIX 用户(包括 Mac OS X 和 Linux 用户)本指南中的示例假定使用了 virtual environment。

    对于 Windows 用户,本指南中的示例假定在安装 Python 时选择了修改系统 PATH 环境变量。

    在命令行中指定一个准确或最小版本也是可以的。 当使用比较运算符例如 >, < 或其他某些可以被终端所解析的特殊字符时,包名称与版本号应当用双引号括起来:

    python -m pip install SomePackage==1.0.4 # specific version

    python -m pip install "SomePackage>=1.0.4" # minimum version

    通常,如果一个匹配的模块已安装,尝试再次安装将不会有任何效果。 要升级现有模块必须显式地发出请求:

    python -m pip install --upgrade SomePackage

    更多有关 pip 及其功能的信息和资源可以在 Python 软件包用户指南 中找到。

    虚拟环境的创建可使用 venv 模块来完成。 向已激活虚拟环境安装软件包可使用上文所介绍的命令。

    我应如何 ...?¶

    这是一些常见任务的快速解答或相关链接。

    ... 在 Python 3.4 之前的 Python 版本中安装 pip ?¶

    Python 捆绑 pip 是从 Python 3.4 才开始的。 对于更早的版本,pip 需要“引导安装bootstrapped”,具体说明参见 Python 软件包用户指南。

    ... 只为当前用户安装软件包?¶

    将 --user 选项传入 python -m pip install 将只为当前用户而非为系统中的所有用户安装软件包。

    ... 安装科学计算类 Python 软件包?¶

    许多科学计算类 Python 软件包都有复杂的二进制编译文件依赖,直接使用 pip 安装目前并不太容易。 在当前情况下,通过 其他方式 而非尝试用 pip 安装这些软件包对用户来说通常会更容易。

    ... 使用并行安装的多个 Python 版本?¶

    在 Linux, Mac OS X 以及其他 POSIX 系统中,使用带版本号的 Python 命令配合 -m 开关选项来运行特定版本的 pip:

    python2 -m pip install SomePackage # default Python 2

    python2.7 -m pip install SomePackage # specifically Python 2.7

    python3 -m pip install SomePackage # default Python 3

    python3.4 -m pip install SomePackage # specifically Python 3.4

    也可以使用带特定版本号的 pip 命令。

    在 Windows 中,使用 py Python 启动器命令配合 -m 开关选项:

    py -2 -m pip install SomePackage # default Python 2

    py -2.7 -m pip install SomePackage # specifically Python 2.7

    py -3 -m pip install SomePackage # default Python 3

    py -3.4 -m pip install SomePackage # specifically Python 3.4

    常见的安装问题¶

    在 Linux 的系统 Python 版本上安装¶

    Linux 系统通常会将某个 Python 版本作为发行版的一部分包含在内。 将软件包安装到这个 Python 版本上需要系统 root 权限,并可能会干扰到系统包管理器和其他系统组件的运作,如果这些组件在使用 pip 时被意外升级的话。

    在这样的系统上,通过 pip 安装软件包通常最好是使用虚拟环境或分用户安装。

    未安装 pip¶

    默认情况下可能未安装 pip,一种可选解决方案是:

    python -m ensurepip --default-pip

    还有其他资源可用来 安装 pip

    安装二进制编译扩展¶

    Python 通常非常依赖基于源代码的发布方式,也就是期望最终用户在安装过程中使用源码来编译生成扩展模块。

    随着对二进制码 wheel 格式支持的引入,以及通过 Python Packaging Index 至少发布 Windows 和 Mac OS X 版的 wheel 文件,预计此问题将逐步得到解决,因为用户将能够更频繁地安装预编译扩展,而不再需要自己编译它们。

    某些用来安装 科学计算类软件包 的解决方案对于尚未提供预编译 wheel 文件的那些扩展模块来说,也有助于用户在无需进行本机编译的情况下获取二进制码扩展模块。

    展开全文
  • 解决方案我的用户没有pip目录的权限,我使用sudo -H标志重新安装Python 3.5我正在尝试使用pip3为python 3.5安装Tensorflow – 出于this github问题描述的原因 – 但是当我使用sudo pip3 install * .whl安装它时会...

    解决方案我的用户没有pip目录的权限,我使用sudo -H标志重新安装了

    Python 3.5

    我正在尝试使用pip3为python 3.5安装Tensorflow – 出于this github问题中描述的原因 – 但是当我使用sudo pip3 install * .whl安装它时会安装到python 3.4.

    如何重定向pip3以安装到我的python 3.5目录中?

    我在Ubuntu 14.04上运行

    kendall@kendall-Macmini:~/Downloads$python3.4 -m pip --version

    pip 8.1.2 from /usr/local/lib/python3.4/dist-packages/pip-8.1.2-py3.4.egg (python 3.4)

    kendall@kendall-Macmini:~/Downloads$python3.5 -m pip --version

    /usr/local/bin/python3.5: No module named pip

    看起来我甚至没有为python 3.5安装pip.我怎样才能做到这一点?

    我试过了

    kendall@kendall-Macmini:~/Downloads$pip install -U pip

    Requirement already up-to-date: pip in /usr/local/lib/python3.4/dist-packages/pip-8.1.2-py3.4.egg

    也,

    kendall@kendall-Macmini:~/Downloads$whereis pip

    pip: /usr/bin/pip /usr/bin/X11/pip /usr/local/bin/pip3.4 /usr/local/bin/pip /usr/local/bin/pip2.7 /usr/share/man/man1/pip.1.gz

    我找不到升级到pip3.5的任何支持

    UPDATE

    kendall@kendall-Macmini:~/Downloads$sudo apt-get install python3-setuptools

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    python3-setuptools is already the newest version.

    The following packages were automatically installed and are no longer required:

    libntdb1 linux-headers-4.2.0-27 linux-headers-4.2.0-27-generic

    linux-image-4.2.0-27-generic linux-image-extra-4.2.0-27-generic

    linux-signed-image-4.2.0-27-generic python-ntdb

    Use 'apt-get autoremove' to remove them.

    0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

    kendall@kendall-Macmini:~/Downloads$sudo python3.5 easy_install.py pip

    python3.5: can't open file 'easy_install.py': [Errno 2] No such file or directory

    kendall@kendall-Macmini:~/Downloads$python3.5 -m ensurepip

    Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS

    kendall@kendall-Macmini:~/Downloads$sudo apt-get install pip3

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    E: Unable to locate package pip3

    kendall@kendall-Macmini:~/Downloads$sudo apt-get install libssl-dev

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    libssl-dev is already the newest version.

    The following packages were automatically installed and are no longer required:

    libntdb1 linux-headers-4.2.0-27 linux-headers-4.2.0-27-generic

    linux-image-4.2.0-27-generic linux-image-extra-4.2.0-27-generic

    linux-signed-image-4.2.0-27-generic python-ntdb

    Use 'apt-get autoremove' to remove them.

    0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

    kendall@kendall-Macmini:~/Downloads$python3.5 -m ensurepip

    Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS

    正如@fwalsh所推荐的那样

    kendall@kendall-Macmini:~/Downloads$python3.5 get-pip.py

    Traceback (most recent call last):

    File "get-pip.py", line 19177, in

    main()

    File "get-pip.py", line 194, in main

    bootstrap(tmpdir=tmpdir)

    File "get-pip.py", line 82, in bootstrap

    import pip

    zipimport.ZipImportError: can't decompress data; zlib not available

    好像我错过了各种各样的依赖 – 我将尝试重新安装

    展开全文
  • 问题描述:在ubuntu16.04python3.5安装pip方法:安装命令:sudo apt install python3-pip查看pip版本的命令:pip3 -V查看关于pip的相关信息的命令:pip3 list升级pip的命令:sudo -H pip3 install --upgrade pip...

    问题描述:在ubuntu16.04中给python3.5安装pip

    方法:安装命令:sudo apt install python3-pip

    查看pip版本的命令:pip3 -V

    查看关于pip的相关信息的命令:pip3 list

    升级pip的命令:sudo -H pip3 install --upgrade pip

    说明:1、对于python3以上版本,安装pip需要使用pip3,而对于python2系列的版本,则直接就是pip,如安装命令为:sudo apt install python-pip

    2、删除pip3的命令:sudo apt remove python3-pip

    3、通过pip安装python第三方库的命令:

    pip3 install numpy

    pip3 install scipy

    安装时提示权限不够,所以我使用了sudo重新安装,即:sudo pip3 install numpy 和 sudo pip3 install scipy ,安装成功

    安装matplotlib前需要安装python3-tk,命令为:sudo apt-get install python3-tk , pip3 install matplotlib, 还需要安装nose库:pip3 install nose

    安装时提示权限不够,使用sudo重新安装,即:sudo pip3 install nose 和 sudo pip3 install matplotlib ,安装成功

    安装scikit-learn:sudo pip3 install -U scikit-learn

    4、pip 是一个安装和管理 Python 包的工具,是easy_install的替代品

    展开全文
  • 我centos7上同时有python2.7和python3.5。现在希望能在使用python3.5...官网安装pip的方法是,https://pip.pypa.io/en/stable/installing/于是我执行了wget https://bootstrap.pypa.io/get-pip.pypython3.5 get-pip...
  • I recently installed python 2.7.2 on my Mac running OSX 10.6.8. Previously, I had version 2.6. I set my path in .bash_profile as follows:export PATH=/usr/local/bin:$PATHexport PATH=/usr/local/share/.....
  • 今天不小心把pip给删除了,然后就搜怎么安装。弄了半天才弄好,这边记录一下: 1.下载安装文件 官方网站给出了安装的方法https://packaging.python.org/tutorials/installing-packages/#use-pip-for-installing 假如...
  • Python利用pip安装第三方库函数

    千次阅读 2016-11-24 10:10:58
    利用pip安装Python第三方库函数比较简单,下面记录怎么安装pip及怎么用pip安装第三方库函数; 1、安装pip之前先要安装setuptools工具,官网下载地址点击打开链接,网页往下翻,下载相应的安装版本,解压到C盘,打开...
  • python进行pip安装插件时提示如下: You are using pip version 10.0.1, however version 19.0.3 is available. 此时根据提示进行更新pip版本,在命令行输入: python -m pip install --upgrade pip 但是此时...
  • python中pip超时增加时长

    千次阅读 2019-01-02 20:20:23
    今天在安装python的第三方模块pytest时发生了 Read timed out这个错误,看了一下周大便的博客发现了怎么增加时长,记录一下: 首先在cmd输入pip --default-timeout=100 install -U pip 其次pip --default-timeout=...
  • python安装pip+setuptools的问题

    千次阅读 2018-04-06 22:50:09
    安装pip的时候请先看一下自己python的环境变量...先在cmd命令行到 这个文件下面 进入以后在命令行写入:python -m ensurepip 这个命令就可以解决不过需要住的是在python3中pip的命令是pip3 install xxx;Python...
  • 怎么pip安装python

    2021-03-22 11:36:47
    pip安装之前要确保你安装python,并将python配置到了系统环境或者是用户环境,最推荐的python安装方法是Anaconda安装,在安装过程记得要勾选将python环境配置到环境路径。 1.查看python环境配置 具体是...
  • python交互式模式运行pip install pymysql 会抛出 语法错误,不知为何. 此时应该找到python安装目录,在Windows命令行下进入到python安装目录下的Script目录下,运行命令:pip installPyMySQL即可. 至于python...
  • python怎么安装模块pip

    2020-02-04 17:44:52
    在左下角的开始菜单按钮上单击鼠标右键,在弹出的菜单选择【命令提示符】即可。![左下角的开始菜单](https://img-blog.csdnimg.cn/20200204171119622.png 二、进入pip程序 如果Python装在D盘: ...
  • python 2.* 使用: pip installpython 3.* 使用: pip3 install 
  • 今天接触到一台服务器上面有Python2.7和Python3.4,想在Python3.4下安装一个TensorFlow,但不管怎么装都只能装到Python2.7上,特别头疼,后来发现是因为不论用pip还是pip3,都是指向的Python2.7。 查看pip指向 ...
  • 在使用python的时候,经常使用到pip这个工具,可以很方便的线上安装依赖库,当然pip还有很多参数都可以帮我们去查询一些库信息,在安装python的时候,下载带有pip的安装包就可以直接安装pip啦,当然没有带pip的,也...
  • python2和python3装好之后怎么安装pip

    千次阅读 2018-01-08 19:42:20
    python2用了一段时间之后要安装python3,这时候python2已经装了pip。但是pip并不对python3适用,因此需要对python2pip重装,对python3也执行同样的命令。 首先,找到python2和python3的安装目录,修改python...
  • Mac 上Python多版本pip安装库的问题

    千次阅读 2018-08-30 11:36:10
    今天接触到一台服务器上面有Python2.7和Python3.4,想在Python3.4下安装一个TensorFlow,但不管怎么装都只能装到Python2.7上,特别头疼,后来发现是因为不论用pip还是pip3,都是指向的Python2.7。 查看pip指向 ...
  • Ubuntu两个Python时,怎么使用pip

    千次阅读 2017-06-20 08:26:59
    Ubuntu13.04, 系统内同时装了Python3.3 和 2.7 用sudo apt-get install python-pip...但是现在运行pip install 只能给2.7版安装库(好像是因为重名只能调用python-pip),怎么样设置才能给3.3版安装呢? 问题不在于
  • 今天来说一下,有些刚刚接触python的朋友,在使用pip install安装python 第三方库的过程 会出现网速很慢,或者是安装下载到中途,停止,卡主,或者是下载报错等问题。如下图: 还有一些,等等之类的问题,比如我...
  • 安装Python扩展库有很多种方法,其中pip在线安装最为简单快捷 此方法是在命令提示符环境下操作的 下面介绍具体步骤: 按下键盘的win+R快捷键,打开运行窗口 输入:cmd,然后回车 输入pip list可以查看当前已安装的...
  • Ubuntu18.04 pip方法安装python-pcl ubuntu安装python-pcl有两种方法:源码编译、pip安装。...pip安装很简单,直接在python环境执行下面语句,下载源设置为豆瓣的 pip install python-pcl -i http://pypi.douban....
  • Python中pip是什么?能够做些什么?  pipPython中的一个进行包管理的东西,能够下载包、安装包、卸载包......一些列操作 》怎么查看pip的相关信息  在控制台输入: pip  》》如果出现下面的问题咋整 ...
  • Python中有很多的库和包,是需要下载安装才能使用的,用pip下载非常方便而且会自动下载你说安装的Python版本对应版本的库和包,不必担心你下载的包是否适合你说安装的Python版本) 2、怎么查看是否已经安装pip ...
  • python MyQR 库怎么安装

    千次阅读 2020-08-19 11:32:26
    每天一点点,记录工作实操可行 python MyQR 库怎么安装 mac 打开终端,输入 注意大小写!!! pip install MyQR 回车 Successfully 即可 如果我的文章对你有所帮助,请为我点一个赞,谢谢
  • 本人使用macOS系统,python版本为3.6,在终端输入以下即可安装成功pip3 install matplotlib -i https://pypi.douban.com/simplepython版本若为2.7使用pip install matplotlib -i https://pypi.douban.com...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 602
精华内容 240
关键字:

python中pip怎么安装

python 订阅