Python准备篇:第三方库管理
一:简介依赖管理就是管理第三方库,用的最多的就是将第三方库从仓库中下载到本地。Java可以通过Maven(pom.xml)、Gradle(build.gradle)来管理依赖。前端Vue通过npm(package.json)来管理第三方插件。Python通过Virtualenv(requirements.txt)、Pipenv、Conda这三种来管理第三方库。二:Virtualenv...
一:简介
1.1 常用包管理工具
依赖管理就是管理第三方库(安装、卸载等),用的最多的就是将第三方库从远程仓库中下载到本地供当前项目使用。
- Java可以通过Maven(pom.xml)、Gradle(build.gradle)来管理依赖。
- 前端Vue通过npm(package.json)来管理第三方插件。
- Python通过
Virtualenv
(requirements.txt)、Pipenv
、Poetry
、Conda
这四种来管理第三方库。
1.2 依赖管理要解决的问题
当多个项目需要使用不同的第三方库时就会出现这样的问题:如A项目开发的比较早使用的是Python2.7版本,该项目使用的第三方依赖也是比较低的版本;B项目是后来开发的使用Python最新版本Python3.8以及目前最新的版本的相关依赖。这时就要配置每个项目使用的每个第三方库对应的版本号。
依赖管理就是配置每个项目使用了哪些第三方库以及这些第三放库对应的版本号。
二:Virtualenv 虚拟环境
Virtualenv(virtual environment) : 虚拟环境解决的办法是为每个项目创建一套独立的环境,各自项目使用各自的环境,这样每个项目的第三方库就互不影响了。 每套环境包含Python具体的环境(如Python3.8)以及需要安装的第三方库。 创建好虚拟环境然后指定当前项目对应的虚拟环境就行了, 这样项目所使用的依赖只需要去各自的虚拟环境venv
下找就行了。
2.1 使用PyCharm创建虚拟环境Virtualenv
使用PyCharm创建项目时会让你先选择依赖管理,这里选择Virtualenv,项目创建完后会自动创建一个venv目录。项目创建换成后会自动激活当前虚拟环境,然后点击最下方的Terminal
通过pip命令就可以安装第三方依赖。
通过Perferences可以查看当前项目使用的虚拟环境。
2.2 使用命令创建虚拟环境
以上操作都是IDE帮助我们自动完成的,如创建venv目录,激活当前虚拟环境。对于老项目如果没有使用虚拟环境也可以通过命令行来添加虚拟环境。
- 创建虚拟目录
# python3 -m venv 虚拟环境名称,名称是随意起的,这里起的是tutorial-env
python3 -m venv tutorial-env
- 激活虚拟环境
当激活虚拟环境时命令行上会有个虚拟环境名前缀。
# Unix或MacOS上激活虚拟环境
source tutorial-env/bin/activate
# windows上激活虚拟环境
tutorial-env\Scripts\activate.bat
- 安装第三方库
# 查找第三方库
pip search requests
# 安装第三方库
pip install requests
# 安装指定版本的第三方库
pip install requests==2.6.0
# 更新第三方库
pip install --upgrade requests
# 显示虚拟环境中的第三方库
pip show requests
# 列举所有第三方库
pip list
# 卸载第三方库
pip uninstall requests
# 冻结第三方库,就是将所有第三方库及版本号保存到requirements.txt文本文件中
pip freeze > requirements.txt
# 通过requirements.txt文件安装文件中的所有依赖
pip install -r requirements.txt
2.3 Virtualenv的缺点
- 如果安装新的第三方库或者更新的版本号都要手动执行
pip freeze > requirements.txt
命令来维护第三方库列表,容易造成忘记更新requirements.txt文件。 - requirements.txt会记录安装的第三方库所依赖的其它第三方库。如上面只安装了requests却在requirements.txt记录了5个相关依赖。
- Virtualenv会在项目中生成一个venv目录,venv包含了所有第三方库及Python环境,会造成项目比较大。
三:Pipenv
3.1 安装pipenv
pipenv默认是没有安装的,全局安装pipenv。
sudo -H pip install -U pipenv
3.2 PyCharm 选择Pipenv环境
3.3 修改源
修改默认的源为阿里云。
[[source]]
url = "https://mirrors.aliyun.com/pypi/simple/"
verify_ssl = true
name = "aliyun"
3.4 安装第三方库
在Terminal中安装第三方库requests。
pipenv install requests
3.5 Pipfile和Pipfile.lock
pipenv只生成Pipfile和Pipfile.lock两个文件, 并没有像Virtualenv方式在项目目录下生成venv目录,虚拟环境所需要的第三方库会保存到其它目录下。
Pipfile
: 用于记录所引用的第三方库,分开发包和正式包。Pipfile文件只记录install的库,安装的库所依赖的库不会在此文件中记录,Pipfile.lock
文件:用于记录第三方库对应的版本号,该文件会记录install所依赖的库,例如安装requests库也会依赖urllib3等。
3.6 pipenv相比venv的好处
- pipenv使用Pipfile文件来代替简陋的requirements.txt 文件。
- pipenv区分开发环境和正式环境。
- pipenv只记录install的依赖,不记录第三方依赖的库。
- pipenv虚拟环境目录不在当前项目中。
3.7 pipenv命令
# 查看pipenv安装的第三方库的位置
pipenv --venv
/Users/mengday/.local/share/virtualenvs/demo2-UnCUYduF
# 进入pipenv环境
pipenv shell
# 安装第三方库
pipenv install requests
# 显示安装的库及依赖的库的信息
pipenv graph
四:Anaconda
Anaconda是包管理器和环境管理器。Anaconda预安装了很多数据分析相关的依赖。 Anaconda 一般用于数据分析相关的项目。
Anaconda安装后会有一个默认的环境base(root), 该环境已经安装了Python和其它常用的第三方库, 可以通过Anaconda Navigator来管理环境,也可以通过命令行来管理环境。
conda 是 Anaconda 下用于包管理和环境管理的工具,功能上类似 pip 和 vitualenv 的组合。
# 基于python3.7版本创建一个名字为python37的环境
conda create --name python37 python==3.7
# 激活此环境
conda activate python37
# 退出当前环境
conda deactivate
# 删除该环境
conda env remove -n python37
# 查看所有安装的环境以及环境安装的目录
conda info -e
# 安装 requests
conda install requests
# 查看已安装的包
conda list
# 包更新
conda update requests
# 删除包
conda remove requests
# 更新conda本身
conda update conda
# 更新anaconda 应用
conda update anaconda
# 更新anaconda 应用
conda update anaconda
常见一个环境默认安装了17个第三方库。
更多推荐
所有评论(0)