19. 第三方库的管理和虚拟环境

cover.png

Hi, 大家好。我是茶桁。

在我们之前的课程中,讲解了数据,函数,类,模块以及包。这些基本上已经构成了Python的全部了。

那么,我们在学习Python的包之后,有没有思考过,既然Python有内置模块,我们也可以自己写一些模块来使用,那一定有很多第三方写过相应的模块来供我们使用。那么,这些包该如何去找,找到以后如何使用和管理呢?今天,就让我们来看看这个问题。

第三方库的管理

现在很多编程语言都有第三方库的提供,比如Ruby, Node等。而Python的生态也是发展的最好的之一。Python中比较牛逼的地方就是由大量的第三方库提供给你使用。生态的蓬勃发展也是Python广为流行的最大的原因之一。

Python的第三方库的管理网站:https://pypi.org/

如何安装第三方库?

pip就是Python得包管理工具,解决了包直接的依赖关系,可以方便的管理第三方库(包)。类似于PHP中的Composer, 或者Nodejs中的npm, 又或者Mac中的Homebrew

我们可以使用pip install 包名(库名)来进行安装。而如果是有多个Python环境的情况下,可能需要使用pip3。比如说,我们要安装pymysql这个库:

pip install pymysql

在安装命令过程中,有的时候我们可能对版本会有一定的要求,并不是越新的版本越好。这个时候,我们也可以安装指定版本的包

pip install 包名==版本

现在包都已经安装到本地了,可是因为安装的内容太多,我们可能有的时候会忘记自己以前是否安装过这个包。为了避免重复再装一次,我们可以搜索一下看看:

pip show 包名

这样,这个包的所有信息就会打印出来供我们查看:

image-20230815121349204.png

当然,我们也有类似于想要查看本地安装的所有包的需求:

pip list

这样,我们就可以把本地说安装的包名以及版本都列出来进行查看:

image-20230815121607429.png

这些呢,就是我们在包管理经常用到的一些命令。

等等,大家在执行安装的时候,一定会遇到安装特别缓慢的情况。多数时候可能是因为我们所在的环境因为各种原因连接不上官方的源服务器。

不过别着急,我们可以切换到镜像源上,找一个速度快的来下载安装。

目前国内的安装源有以下几个可供选择:

修改源的方式也很简单,包括了「临时修改」和「永久修改」两种。

临时修改,顾名思义,就是我们有的时候临时需要切换到其他源上进行下载了。

我们可以使用pip的时候在后面加上-i参数,指定pip源:

pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple/ 

多数情况下,我还是习惯于将源永久修改为一个速度较快的镜像上,也懒得每次都输入长传的命令。那么永久修改的方式稍微复杂点,我们分系统来看:

在Linux中,我们找到pip.conf这个文件,一般来说,它的位置应该是~/.pip/pip.conf,如果没有的话,那就创建一个,然后写入如下内容:

[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

在Windows内原理也是一样的,不同的是路径和文件有所不同。

我们在user目录中创建一个pip目录,如:C:\Users\du\pip, 然后在PIP目录下新建一个pip.ini文件,然后写入内容:

[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

这样,我们在之后安装第三方库的时候就会发现,速度快多了。

虚拟环境

虚拟环境呢,就是在当前的系统环境中,去配置另外一个Python得运行环境。我们理论上是可以创建多个不同的虚拟环境的,Python得虚拟环境相互独立,互相之间不会影响。

那么虚拟环境下呢,具有以下一些特点:

  • 虚拟环境中可以在没有权限的情况下安装新的库(Linux系统中可能会出现的问题)
  • 不同的应用可以使用不同的库或不同的版本。
  • 虚拟环境中的库升级也不影响其它环境
  • 虚拟环境可以作为一个项目的专有环境。在需要部署时,一键导出项目的所需要的包

默认方式

Python本身就支持创建和管理虚拟环境。可以使用以下方式进行创建:

python -m venv 虚拟环境名

创建完成后,我们可以使用下面的方式进入虚拟环境,激活虚拟环境

Linux

# 使用source命令去执行v1/bin/目录下的activate
localhost:code yc$ source v1/bin/activate

Windows

# Windows系统需要进入v1/Scripts/这个目录
cd v1/Scripts/
# 运行activate.bat文件
activate.bat
(v1) F:\code

在这之后,我们现在就处于某一个虚拟环境中了,可以执行安装等操作:

pip install pymysql

pip show pymysql

那么如果我的某一个环境被我给搞乱了,我也找不到原因,还不如重新安装来的快。这会儿我们可能就想要退出并删除这个虚拟环境:

如果想要退出虚拟环境,在Linux中,我们可以输入下面这个命令:

# 退出虚拟环境

# Linux
deactivate

那如果是Windows中呢就比较简单了,直接Ctrl+C就好了。

在退出之后,我们直接删除虚拟环境的文件夹,就搞定了。

以上是我们不想要当前虚拟环境的情况下,那也有一种可能是我们需要更换电脑等原因,但是我想带着我的环境一起迁移,这该怎么办?

这也好办,我们可以到处当前环境所有安装过的包:

# 查看所有安装的包
pip list
```
package                 version
------------------------
Numpy                       1.3.1
........


# 导出所有包到文件
pip freeze > ./requirements.txt

然后在下一个环境中,我们直接执行安装文件内所有包就可以了:

pip install -r requirements.txt

Conda

虽然Python中已经有了包管理的方法,但是还是不得不说,有时候第三方提供的方案确实香。

目前,我现在都是使用conda(Andaconda)来管理我本地的虚拟环境。其使用也是非常的简单了,我们可以去其官网上(https://www.anaconda.com/)下载并安装对应自己系统的版本。

安装完成后,Conda就会创建一个默认的base环境,我们之前一直使用的Jupyter Notebook也一并是安装在环境中的。

那么在Conda中,我们经常会用的命令如下:

# 安装包
conda install 包名称

# 安全方式安装包
conda install -c conda-forge 包名称

# 创建环境
conda create --name 环境名 python=3.10 #最后是输入当前环境要用的Python版本

# 切换(激活)环境
conda activate 环境名

# 查看环境列表
conda info --env

# 删除某个环境
conda remove --name 环境名 --all

对比下来,conda真的是非常的方便。推荐大家使用。

那么,今天的课程就到这里结束了。我知道,今天的课程似乎显的特别的少。em....不是似乎,是确实。

原因在于这一部分必须拿出一个章节来介绍一下,否则大家平时在使用的过程中万一将自己的默认环境搞乱了,但是又不知道该怎么办,确实挺烦人的。所以我专门拿一节出来,将环境的问题好好的跟大家介绍下,顺便也是告诉大家,不管你做什么实验和操作,尽量新建一个环境来操作。这样,即便你把当前环境搞的乱七八糟无法恢复,删了就好了。

好,那我们这节课到这里也就结束了,咱们下节课讲讲如何处理异常。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容