您当前的位置:首页 > 生活常识 > 正文

pip是什么 python中str表示什么

pip是什么 python中str表示什么老白最近给朋友们讲解NLP,顺带做了点Python的介绍。虽然大家都或多或少的使用过Python(大部分都不是Python 工程师),但是老白还是惊讶的发现有不少同事并不知道virtualenv,每

老白最近给朋友们讲解NLP,顺带做了点Python的介绍。虽然大家都或多或少的使用过Python(大部分都不是Python 工程师),但是老白还是惊讶的发现有不少同事并不知道virtualenv,每次搞Python都是随便玩玩然后就把系统搞得乱七八糟的了。因此老白给大伙普及了下virtualenv这个神器,顺带也写下这篇文章。这篇的内容主要包含了pip,virtualenv和requirements.txt文件,完全基础,仅供Python新手们学习,有Python经验的同学可以绕道而行^_^。

什么是pip?

pip是一个从Python Package Index(PyPI)安装Python软件包的管理器。这里的PyPI就是一个Python第三方开源仓库。

如果大家有其他语言的背景,那么可能会对包管理器的概念比较熟悉。JavaScript 使用 npm 管理软件包,Ruby 使用 gem,Java使用Maven,以及 .NET 使用 NuGet。Python 中,则是 pip 作为标准包管理器。

Python其实最开始还有一个比较原始基础的包管理器easy_install。但是其渐渐被淘汰了,老白也不建议大家去花过多时间了解。也正是因为pip越来越重要,自从Python3.4和Python2.7.9之后的版本,pip都是默认包含在Python的安装包中的。如果使用的是之前的版本,可以通过easy_install pip来进行安装pip(是不是略显讽刺,easy_install安装一个工具来替代自己)。

easy_install pip

有了pip之后,我们就可以通过类似以下的命令来安装软件包了

#千万先别运行 pipinstalldjango

这里,我们将Django进行了全局安装(全局安装意味着安装完之后将对所有的应用可见)。但是在大部分情况下,我们并不希望进行全局安装。可以在下面的例子中看到,并不是每个应用都会使用同一个版本的软件包,全局安装将会使得软件的运行环境混乱不堪。

virtualenv解决了什么问题

virtualenv解决了一个非常具体的问题:其允许了多个Python项目在同一台电脑上同时开发,并且使用不同的运行环境。

为了更好的说明这个问题,我们可以假设virtualenv这个功能并不存在。当我们需要写一个具有HTTP请求的Python程序时,我们需要使用到Requests这个包,我们可以通过上面提到的pip命令进行安装Requests。

$ pip install requests Collecting requests Using cached requests-2.24.0-py2.py3-none-any.whl (61 kB) Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 Using cached urllib3-1.25.9-py2.py3-none-any.whl (126 kB) Collecting idna<3,>=2.5 Using cached idna-2.10-py2.py3-none-any.whl (58 kB) Collecting chardet<4,>=3.0.2 Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB) Collecting certifi>=2017.4.17 Using cached certifi-2020.6.20-py2.py3-none-any.whl (156 kB) Installing collected packages: urllib3, idna, chardet, certifi, requests Successfully installed certifi-2020.6.20 chardet-3.0.4 idna-2.10 requests-2.24.0 urllib3-1.25.9

但是这个Requests会被安装到哪里呢?

如果是使用linux的话,默认会被安装到/usr/local/lib/<python版本>/site-packages。

Windows则是会安装到c:\users\<用户名>\appdata\local\programs\python\<python版本>\lib\site-packages。

Mac则会安装到/Library/Python/<python版本>/site-packages。

Mac用户和Linux用户在这个过程中还有可能遇到权限问题。

安装好了之后,我们可以通过import requests来使用requests。整个软件的运行也不会有任何问题,客户很满意,赚钱大大的有。

于是用户又给我们了一个新的项目。在做新的项目时,我们发现我们又得使用requests了,只不过这次需要使用的是一个新功能,只有在最新版本的requests中才有这个功能。因此我们决定对requests进行升级.

pipinstall--upgraderequests

一切似乎都很正常,但是其实我们已经给未来埋下了隐患。

当我们运行第一个软件的时候,我们发现完全运行不起来了,到底怎么回事?因为requests的某些API在新版本中被更改了,虽然可能只是一个很小的改动,直接导致了我们原来的程序无法启动了。

此时,我们当然可以直接修改我们之前的应用使用最新的requests API来解决这个问题。但是这会相当的耗时间可能需要将很多东西都进行替换并且完成回归测试。从项目管理的角度来说,除非是出现了一些比较严重的bug,不然不应该占用新项目的时间来解决老项目的问题,因为这样会影响新项目的进度。而这是很常见的一个场景,更多的Python开发工作者可能不只有两个项目。如果总是把软件包都升级到最新版本,对于开发者而言,无异于噩梦。

virtualenv如何帮助开发者

virtualenv通过给每一个应用创建一个完全隔离的虚拟环境来解决这个问题。一个环境其实只是一个简单的文件夹包含了需要运行Python应用的所有依赖。其中也包含了Python运行程序本身,一个完整的Python标准库拷贝,完整的pip,以及site-packages目录。当使用pip进行安装软件的时候,使用的是这个virtualenv创建的pip,并且会将软件包安装到这个virtualenv创建的site-packages中。

如何安装virtualenv

如果已经有了pip,最简单的方式就是通过pip来安装virtualenv。pip和virtualenv也几乎是唯二的两个需要全局安装的工具了,一旦有了这两个,就可以通过virtualenv来创建虚拟环境并且在虚拟环境中工作。

pip install virtualenv

如何创建虚拟环境

virtualenv是创建虚拟环境所需要的唯一工具,而且创建过程也很简单。只需要切换到项目根目录,然后通过virtualenv创建一个新的虚拟环境:

cd/path/to/myproject virtualenvvenv

这里venv是虚拟环境文件夹的名字。这个文件夹会在项目文件夹中。例如,如果我的项目在~/sources/myproject,那么venv的地址就是~/sources/myproject/venv。但是其实我们可以将其放在任何文件夹中。

注意:如果使用类似于git之类的版本控制,记得将venv添加到.gitignore中。

如何使用venv

如果我们查看venv文件夹的话,我们会看到如下一些文件夹:

什么是pip和virtualenv?Python新手必读

venv

这里主要的是Scripts文件夹,里面放置了完整的python运行命令以及pip。我们可以尝试使用Scripts中的pip进行安装requests。

什么是pip和virtualenv?Python新手必读

使用venv中的pip安装requests

一切正常,而且requests被安装到了venv/Lib/site-packages中了。我们也可以使用venv/Scripts/Python命令,一切使用正常。但是。。用起来真的好麻烦别急,virtualenv的开发者也想到了这点,因此他们提供了一个工具activate来减轻virtualenv使用者的负担,这样就不需要每次都输入完整的路径了。

在linux下,

$ source venv/bin/activate

在Windows中,

venv\Scripts\activate

使用了activate之后,我们再使用pip进行安装,默认就安装到venv中了。当然了,这个activate只在当前的terminal中起作用,如果新开一个terminal的话我们需要重新运行一次activate。如果希望在当前的terminal中切换到其他venv中,我们还可以调用deactivate来取消当前虚拟环境的使用。

Requirements.txt

pip和virtualenv就是一对好伙伴,特别是使用requirements.txt的时候。我们在本地创建好了我们的项目以及一系列依赖之后,我们会把这些代码包括依赖推送到代码仓库,或作为备份或与别人分享。很有包的体积都比较大,而且包并没有什么特殊性,因为我们肯定不希望我们直接将项目依赖的包推到代码仓库上。这时候我们就可以使用requirements.txt了。通过pip的freeze命令可以格式化的输出已经安装的软件包,通过重定向可以将输出直接写入requirements.txt文件。

什么是pip和virtualenv?Python新手必读

生成requirements.txt文件

有了requirements.txt文件之后,自然也可以通过requirements.txt文件来继续安装。使用的就是pip install -r 的命令。下面截图显示的例子就是在一个新的虚拟环境venv2中安装requirements.txt中的软件包。

什么是pip和virtualenv?Python新手必读

安装requirements.txt定义的软件包

来个小结

pip能够帮助我们安装软件包,pip是比easy_install优秀的一个工具,建议使用pip

virtualenv能够帮助我们创建一个隔离的运行环境

为了不用输入完整路径,使用activate来激活虚拟环境

使用requirements.txt来和他人共享项目依赖信息


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 个人评价怎么写高中(高中综合自我评价怎么写)

下一篇: 消防专用锁使用视频(消防锁防火门锁)



推荐阅读