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等相关技术。从头到尾详细的教授一边人工智能。
茶桁的沙龍的其他內容
2023/08/22
虽然是最后一节课了,但是本节课的任务却是一点也不轻松。相比较而言,如果你以后从事的是数据治理和分析工作,那么本节课的内容可能会是你在今后工作中用到的最多的内容。我们需要学习行列索引的操作,数据的处理,数据的合并,多层索引,时间序列,数据的分组聚合(重点)。最后,我们会有一个案例的展示。
Thumbnail
2023/08/22
虽然是最后一节课了,但是本节课的任务却是一点也不轻松。相比较而言,如果你以后从事的是数据治理和分析工作,那么本节课的内容可能会是你在今后工作中用到的最多的内容。我们需要学习行列索引的操作,数据的处理,数据的合并,多层索引,时间序列,数据的分组聚合(重点)。最后,我们会有一个案例的展示。
Thumbnail
2023/08/21
Hi,大家好。我是茶桁。 上一节课中,我们学习了matplotlib. 实际上,我们已经进入了数据可视化阶段。 可是在上一节课中,所有的数据都是我们固定写好的,包括两个电影的数据展示的案例(柱状图和直方图),都是我们将数据手动写成了数据列表,然后直接使用。 在我们平时的工作中,不太有那么多的机
Thumbnail
2023/08/21
Hi,大家好。我是茶桁。 上一节课中,我们学习了matplotlib. 实际上,我们已经进入了数据可视化阶段。 可是在上一节课中,所有的数据都是我们固定写好的,包括两个电影的数据展示的案例(柱状图和直方图),都是我们将数据手动写成了数据列表,然后直接使用。 在我们平时的工作中,不太有那么多的机
Thumbnail
2023/08/21
Hi, 大家好。我是茶桁。 在上一节课中,我们结束了Python正式的所有内容,但是咱们的Python课程还未结束。从这节课开始,我们要来学习一下Python的第三方库。 Python的生态非常完善也非常活跃,我们不太可能讲目前所有的第三方库全部都介绍一遍,只介绍几个有影响力并且和处理数据相关的
Thumbnail
2023/08/21
Hi, 大家好。我是茶桁。 在上一节课中,我们结束了Python正式的所有内容,但是咱们的Python课程还未结束。从这节课开始,我们要来学习一下Python的第三方库。 Python的生态非常完善也非常活跃,我们不太可能讲目前所有的第三方库全部都介绍一遍,只介绍几个有影响力并且和处理数据相关的
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件 在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件。以下是基本的安裝步驟: 確認p
Thumbnail
在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件 在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件。以下是基本的安裝步驟: 確認p
Thumbnail
pip 的安裝、使用,多種功能一一展示,完整教學
Thumbnail
pip 的安裝、使用,多種功能一一展示,完整教學
Thumbnail
在 Linux 系統創建 python 虛擬環境的詳細流程 (完全不需要 Anaconda)
Thumbnail
在 Linux 系統創建 python 虛擬環境的詳細流程 (完全不需要 Anaconda)
Thumbnail
pip下載與安裝的過程太久嗎? 網路斷線怎麼辦? 內網需求怎麼達成?…, 相信這幾個心中的疑問在我們開發Python的過程中都會遇到, 尤其是一個完整的套件需要依賴上千百種的額外套件時, 這個過程真的是非常久啊! 難道我們不能加速嗎? 看到這篇的您非常的幸運, 我們會實際教您如何架設本地端的Pyth
Thumbnail
pip下載與安裝的過程太久嗎? 網路斷線怎麼辦? 內網需求怎麼達成?…, 相信這幾個心中的疑問在我們開發Python的過程中都會遇到, 尤其是一個完整的套件需要依賴上千百種的額外套件時, 這個過程真的是非常久啊! 難道我們不能加速嗎? 看到這篇的您非常的幸運, 我們會實際教您如何架設本地端的Pyth
Thumbnail
⏳ 優質好文,歡迎支持與學習,讓阿Han給你最歡樂的學習課程、最貼近業界的實戰技巧…,just for fun fun fun…😄 相信對於具有開發基礎的學員們來說,基本的開發工程相信已經得心應手了, 那麼您們可能會苦於這些問題: ❓ 哇! pip install別人的程式好方便
Thumbnail
⏳ 優質好文,歡迎支持與學習,讓阿Han給你最歡樂的學習課程、最貼近業界的實戰技巧…,just for fun fun fun…😄 相信對於具有開發基礎的學員們來說,基本的開發工程相信已經得心應手了, 那麼您們可能會苦於這些問題: ❓ 哇! pip install別人的程式好方便
Thumbnail
Hi, 大家好。我是茶桁。 在我们之前的课程中,讲解了数据,函数,类,模块以及包。这些基本上已经构成了Python的全部了。 那么,我们在学习Python的包之后,有没有思考过,既然Python有内置模块,我们也可以自己写一些模块来使用,那一定有很多第三方写过相应的模块来供我们使用。那么,这
Thumbnail
Hi, 大家好。我是茶桁。 在我们之前的课程中,讲解了数据,函数,类,模块以及包。这些基本上已经构成了Python的全部了。 那么,我们在学习Python的包之后,有没有思考过,既然Python有内置模块,我们也可以自己写一些模块来使用,那一定有很多第三方写过相应的模块来供我们使用。那么,这
Thumbnail
Hi, 大家好。我是茶桁。 这一段Python之旅怎么样?还算顺利吧? 之前我们都学习了些什么?有基本常识,流程,函数,不同类型的数据以及一些模块对吧?并且还做了一些练习来巩固所学过的内容。 那么今天,我们接着来学习模块。不过今天要学的模块和以往不太一样了,以前我们学习的都是Python内
Thumbnail
Hi, 大家好。我是茶桁。 这一段Python之旅怎么样?还算顺利吧? 之前我们都学习了些什么?有基本常识,流程,函数,不同类型的数据以及一些模块对吧?并且还做了一些练习来巩固所学过的内容。 那么今天,我们接着来学习模块。不过今天要学的模块和以往不太一样了,以前我们学习的都是Python内
Thumbnail
初玩python時常用pip安裝各式各樣的套件下來,而這些套件在本機中是以全域的方式安裝。假設今天需要接手別人的專案,所用的套件版本不相容,對於這些仰賴的套件(依賴dependencies)進行管理跟切分就成了一個課題。
Thumbnail
初玩python時常用pip安裝各式各樣的套件下來,而這些套件在本機中是以全域的方式安裝。假設今天需要接手別人的專案,所用的套件版本不相容,對於這些仰賴的套件(依賴dependencies)進行管理跟切分就成了一個課題。
Thumbnail
PYTHON 介紹 Python 是一種被廣泛使用的高階編程語言,它的用途十分廣泛,支援了多種的程式設計的範式,包括函數式、指令式、結構化、物件導向。 Python的設計哲學強調了它簡潔的語法,是使用空格縮進來劃分程式碼。 Python是的社群中擁有許多模組可以使用,在進行某些用途時可以很引入模組,
Thumbnail
PYTHON 介紹 Python 是一種被廣泛使用的高階編程語言,它的用途十分廣泛,支援了多種的程式設計的範式,包括函數式、指令式、結構化、物件導向。 Python的設計哲學強調了它簡潔的語法,是使用空格縮進來劃分程式碼。 Python是的社群中擁有許多模組可以使用,在進行某些用途時可以很引入模組,
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News