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....不是似乎,是确实。

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

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

avatar-img
9會員
62內容數
从基础开始,再到Python,然后是CV、BI、NLP等相关技术。从头到尾详细的教授一边人工智能。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
茶桁的沙龍 的其他內容
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中如何去进行文件操作。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
想要使用python學習程式應該要怎麼開始呢? 首先就是要下載Python(程式語言)還有Pychar(整合開發環境,IDE)這兩個軟體。 在Google的搜尋欄位打上Python下載, 點選第一個Download Python。 第二步點選Download,選擇你的電腦系統。
Thumbnail
在離線環境需要安裝Python套件時就相當的麻煩,需要先下載好套件包,在打指令安裝,若套件數量一多時就會相當麻煩。 本文將介紹如何利用兩行指令快速的安裝整個資料夾的套件。
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
Python的模組和庫是可重用的程式碼塊,可透過import語句引入。特定部分可以透過from和import引入,並可使用as指定別名。第三方模組可透過pip工具安裝並在程式碼中使用。此外,也可以創建自定義模組並在其他Python文件中引用。
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
情況描述 我們在「【🔒 Python 先修班】教你親手打包專屬套件庫的手作課(pip install…)」有提到如何打包Python讓自己的程式變成套件, 讓其他人可以用pip install的方式進行安裝,😲 But… 我們實際上打包後, 發現到引用的檔案都有被打包進去,但目錄卻未被打包
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
想要開始Python語言的開發環境,有兩種常見方式,一種是下載安裝到本機端,另一種是直接在雲端執行。本文將介紹三個常見的開發工具及其安裝步驟。
Thumbnail
本文將介紹 Python 中的閉包(Closure),我們將從閉包的定義開始介紹,然後是閉包的用途,以及最後的實作範例。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
想要使用python學習程式應該要怎麼開始呢? 首先就是要下載Python(程式語言)還有Pychar(整合開發環境,IDE)這兩個軟體。 在Google的搜尋欄位打上Python下載, 點選第一個Download Python。 第二步點選Download,選擇你的電腦系統。
Thumbnail
在離線環境需要安裝Python套件時就相當的麻煩,需要先下載好套件包,在打指令安裝,若套件數量一多時就會相當麻煩。 本文將介紹如何利用兩行指令快速的安裝整個資料夾的套件。
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
Python的模組和庫是可重用的程式碼塊,可透過import語句引入。特定部分可以透過from和import引入,並可使用as指定別名。第三方模組可透過pip工具安裝並在程式碼中使用。此外,也可以創建自定義模組並在其他Python文件中引用。
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
情況描述 我們在「【🔒 Python 先修班】教你親手打包專屬套件庫的手作課(pip install…)」有提到如何打包Python讓自己的程式變成套件, 讓其他人可以用pip install的方式進行安裝,😲 But… 我們實際上打包後, 發現到引用的檔案都有被打包進去,但目錄卻未被打包
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
想要開始Python語言的開發環境,有兩種常見方式,一種是下載安裝到本機端,另一種是直接在雲端執行。本文將介紹三個常見的開發工具及其安裝步驟。
Thumbnail
本文將介紹 Python 中的閉包(Closure),我們將從閉包的定義開始介紹,然後是閉包的用途,以及最後的實作範例。