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

閱讀時間約 8 分鐘
raw-image


Hi, 大家好。我是茶桁。

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

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

第三方库的管理

现在很多编程语言都有第三方库的提供,比如RubyNode等。而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 包名


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

raw-image


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


pip list


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

raw-image

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

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

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

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

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

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

我们可以使用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....不是似乎,是确实。

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

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

9會員
62Content count
从基础开始,再到Python,然后是CV、BI、NLP等相关技术。从头到尾详细的教授一边人工智能。
留言0
查看全部
發表第一個留言支持創作者!
茶桁的沙龍 的其他內容
Hi, 大家好。我是茶桁。 这一段Python之旅怎么样?还算顺利吧? 之前我们都学习了些什么?有基本常识,流程,函数,不同类型的数据以及一些模块对吧?并且还做了一些练习来巩固所学过的内容。 那么今天,我们接着来学习模块。不过今天要学的模块和以往不太一样了,以前我们学习的都是Python内
Hi,大家好。我是茶桁。 不知不觉中,咱们针对人工智能的Python课程已经过去了一半。相信大家这段时间也都有所进步了。 今天这节课呢,我给大家划一个重点。不仅仅是Python,很多语言里都是通用的,而且非常的强大。这就是我们的正则表达式。 说起正则表达式,很多程序员其实对其都不是很重视,但是
Hi, 大家好。我是茶桁。 上一节课最后,我让我家去预习一下日历和时间的相关模块,不知道大家有没有去预习。不管如何,这节课,让我们开始做一个练习:万年历。 没有预习的小伙伴也跟着一起,在本次练习完成的时候,相信你会对这些模块有了初步的了解。 好,让我们开始吧。 首先,我们需要来看看calen
Hi,大家好。我是茶桁。 系统内置模块就是安装完Python解释器之后,系统本身所提供的模块。我知道,咱们之前的课程里有学习系统的内置函数,这个模块和函数不是一个东西。模块这种东西,是需要导入后才可以使用的,比如:json, re, os等等。
Hi,大家好。我是茶桁。 上一节课,我们详细的介绍了文件读写的流程和原理,并用Python进行实际操作了一下。 那么这节课呢,我们利用之前所学的内容,尝试做一个小练习:建立一个登录注册系统。上节课我们在结尾的时候讲练习内容贴了出来,还记得要求吗?  实现功能:  1. 用户输入用户名和密码以及
在结束了Python数据类型学习之后,我们今天开始进入一个新的篇章。今天,让我们来详细了解一下在Python中如何去进行文件操作。
Hi, 大家好。我是茶桁。 这一段Python之旅怎么样?还算顺利吧? 之前我们都学习了些什么?有基本常识,流程,函数,不同类型的数据以及一些模块对吧?并且还做了一些练习来巩固所学过的内容。 那么今天,我们接着来学习模块。不过今天要学的模块和以往不太一样了,以前我们学习的都是Python内
Hi,大家好。我是茶桁。 不知不觉中,咱们针对人工智能的Python课程已经过去了一半。相信大家这段时间也都有所进步了。 今天这节课呢,我给大家划一个重点。不仅仅是Python,很多语言里都是通用的,而且非常的强大。这就是我们的正则表达式。 说起正则表达式,很多程序员其实对其都不是很重视,但是
Hi, 大家好。我是茶桁。 上一节课最后,我让我家去预习一下日历和时间的相关模块,不知道大家有没有去预习。不管如何,这节课,让我们开始做一个练习:万年历。 没有预习的小伙伴也跟着一起,在本次练习完成的时候,相信你会对这些模块有了初步的了解。 好,让我们开始吧。 首先,我们需要来看看calen
Hi,大家好。我是茶桁。 系统内置模块就是安装完Python解释器之后,系统本身所提供的模块。我知道,咱们之前的课程里有学习系统的内置函数,这个模块和函数不是一个东西。模块这种东西,是需要导入后才可以使用的,比如:json, re, os等等。
Hi,大家好。我是茶桁。 上一节课,我们详细的介绍了文件读写的流程和原理,并用Python进行实际操作了一下。 那么这节课呢,我们利用之前所学的内容,尝试做一个小练习:建立一个登录注册系统。上节课我们在结尾的时候讲练习内容贴了出来,还记得要求吗?  实现功能:  1. 用户输入用户名和密码以及
在结束了Python数据类型学习之后,我们今天开始进入一个新的篇章。今天,让我们来详细了解一下在Python中如何去进行文件操作。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
這種感覺就像是在沙漠中爬進冰窖,有一種苦盡甘來的感覺。
Thumbnail
東方欲曉,方若彤早已步履安詳地出了家門,轉身即見抹身影,矗立於距己兩步之遙之地,她下意識地退了數步,因著周身仍罩著天才濛亮的那層灰,她定睛兩秒,這才看清眼前人究竟是誰。 而來人──也就是喬一澐,僅是淡然瞥她一眼,一聲不吭地即要拽過其掌,方若彤察覺其意圖,眼明手快地將手縮於身後,順勢又退了步,貌似已隱
Thumbnail
人家都說沒被渣過幾次不知道真愛難尋 渣男不愧是渣男,他回答了天底下男人都會說的話:我跟我女朋友感情有問題,我已經跟她提分手了,但是她不肯.可是我真的不愛她了,我愛的是妳! 而渣男之所以厲害,就是即便他們說著鬼話,我們竟然還是相信了...
Thumbnail
一連幾天,夏威夷都在下雨。我的運氣似乎總是這麼不好,難得出門散心,居然還遇上暴雨。原本想要換個心情,現在卻被這連綿的大雨困在這狹小的房間裡,心裡更加堵得慌。我打開手機,和家人一一報了平安,又不死心的點開朋友圈,看到一張笑靨如花的照片時,我氣憤地拉黑了某人,努力的克制住想要摔手機的衝動。把自己裹在被子
Thumbnail
這一天,本來說好兩人約好一起吃飯,章巧思臨時有事而取消,正當無聊之際,想到周大鈞,打了通電話,原以為他出國,沒想到根本就是在國內,心想,反正沒甚麼事,去找他吧! 她是左瞧右看,沒有人呀,只有那些來來往往的大小車輛。這條馬路是進入某個非常有名的森林遊樂區,每天的車輛都要受到管控的。
1991 美國西雅圖   對於向來在都會辦公大樓中做事的Samansa來說, 來到微軟總部占地數公頃的基地, 彷彿是進入度假中心似的。 一棟棟二,三層樓的平實建築散落在綠茵, 流水及井然有序的小公園中間,一派悠然寧靜。  好不容易找到了19號建築, Samansa停好了車, 便進入了光線充足卻又安靜
Thumbnail
訂立契約後,雖說有種被耍了的感覺,但卻開始了人生新的篇章。         
Thumbnail
「真抱歉,還要妳動筆。」 「不,以前都是前輩動筆,而且我也該學學怎麼寫。」 我又不是第一天認識前輩,若不是我在診療結束後盡快在前輩的床旁架設桌板,並盡可能用最快的速度製作任務報告,看起來狀況比誰都還慘的前輩肯定會硬撐自己。 雖依「組織」的醫療技術,痊癒是早晚的問題。聽米亞說大概得躺個兩星期...
Thumbnail
一日天朗氣清、碧空如洗,方若彤依循禮拜五下課時和梁馨媗的約,一早即抵至她家門口處,而她家所在,實質上是於步出家門後,即往右轉,遇見第一個十字路口後再右轉,而後越過一個街區旁的右邊數來第二幢房屋,兩家僅距五分鐘的路程,彌足之近,因此梁馨媗倒時不時地會約她至她家複習功課,抑或是一同吃茶點、看電視放鬆;而
Thumbnail
『我要逃了,這裡不行了。』 做出決定的我在當天晚上再次跟北歐的朋友討論上了局勢,尋求他的意見。 『覺得真要走就明後天就走了,一天成長兩倍,在一周就封城封國了。』 時刻注意著狀況的友人發出了警告。 『It’s now or never.』
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
這種感覺就像是在沙漠中爬進冰窖,有一種苦盡甘來的感覺。
Thumbnail
東方欲曉,方若彤早已步履安詳地出了家門,轉身即見抹身影,矗立於距己兩步之遙之地,她下意識地退了數步,因著周身仍罩著天才濛亮的那層灰,她定睛兩秒,這才看清眼前人究竟是誰。 而來人──也就是喬一澐,僅是淡然瞥她一眼,一聲不吭地即要拽過其掌,方若彤察覺其意圖,眼明手快地將手縮於身後,順勢又退了步,貌似已隱
Thumbnail
人家都說沒被渣過幾次不知道真愛難尋 渣男不愧是渣男,他回答了天底下男人都會說的話:我跟我女朋友感情有問題,我已經跟她提分手了,但是她不肯.可是我真的不愛她了,我愛的是妳! 而渣男之所以厲害,就是即便他們說著鬼話,我們竟然還是相信了...
Thumbnail
一連幾天,夏威夷都在下雨。我的運氣似乎總是這麼不好,難得出門散心,居然還遇上暴雨。原本想要換個心情,現在卻被這連綿的大雨困在這狹小的房間裡,心裡更加堵得慌。我打開手機,和家人一一報了平安,又不死心的點開朋友圈,看到一張笑靨如花的照片時,我氣憤地拉黑了某人,努力的克制住想要摔手機的衝動。把自己裹在被子
Thumbnail
這一天,本來說好兩人約好一起吃飯,章巧思臨時有事而取消,正當無聊之際,想到周大鈞,打了通電話,原以為他出國,沒想到根本就是在國內,心想,反正沒甚麼事,去找他吧! 她是左瞧右看,沒有人呀,只有那些來來往往的大小車輛。這條馬路是進入某個非常有名的森林遊樂區,每天的車輛都要受到管控的。
1991 美國西雅圖   對於向來在都會辦公大樓中做事的Samansa來說, 來到微軟總部占地數公頃的基地, 彷彿是進入度假中心似的。 一棟棟二,三層樓的平實建築散落在綠茵, 流水及井然有序的小公園中間,一派悠然寧靜。  好不容易找到了19號建築, Samansa停好了車, 便進入了光線充足卻又安靜
Thumbnail
訂立契約後,雖說有種被耍了的感覺,但卻開始了人生新的篇章。         
Thumbnail
「真抱歉,還要妳動筆。」 「不,以前都是前輩動筆,而且我也該學學怎麼寫。」 我又不是第一天認識前輩,若不是我在診療結束後盡快在前輩的床旁架設桌板,並盡可能用最快的速度製作任務報告,看起來狀況比誰都還慘的前輩肯定會硬撐自己。 雖依「組織」的醫療技術,痊癒是早晚的問題。聽米亞說大概得躺個兩星期...
Thumbnail
一日天朗氣清、碧空如洗,方若彤依循禮拜五下課時和梁馨媗的約,一早即抵至她家門口處,而她家所在,實質上是於步出家門後,即往右轉,遇見第一個十字路口後再右轉,而後越過一個街區旁的右邊數來第二幢房屋,兩家僅距五分鐘的路程,彌足之近,因此梁馨媗倒時不時地會約她至她家複習功課,抑或是一同吃茶點、看電視放鬆;而
Thumbnail
『我要逃了,這裡不行了。』 做出決定的我在當天晚上再次跟北歐的朋友討論上了局勢,尋求他的意見。 『覺得真要走就明後天就走了,一天成長兩倍,在一周就封城封國了。』 時刻注意著狀況的友人發出了警告。 『It’s now or never.』