一、为什么要进行包管理

Python中的第三方包提供了各种功能,避免了手写大量代码。常用的包例如request、webdriver和airtest,我们在长期的使用中积累了很多第三方包,可以在命令行中使用pip list查看。在开发一个新项目并部署到公共服务器时,许多人会使用pip freeze > requirements.txt生成依赖包列表文件,并在服务器上使用pip install -r requirements.txt安装这些包。但在此过程中,如果没有考虑环境隔离,就会出现当前项目只需要少量第三方包,但实际却安装了不需要的包的情况。
因此,要解决的主要问题是
(1)避免浪费时间和空间
(2)分离项目之间的依赖关系。为了解决这个问题,可以使用virtualenv为每个应用程序创建一个独立的Python运行环境。

二、怎么做

1、命令行(情况一)

第一步:先安装虚拟环境模块

pip3 install virtualenv # 安装virtualenv

第二步 :激活虚拟 环境

source myvenv/bin/activate

激活之后,命令行最前面会加上一个标识。如下。
学习Pycharm使用方法(一):Pycharm中Make available to all projects的含义是什么-LMLPHP
这个时候,在命令行下面执行pip install安装后的包就只会安装到刚刚创建的虚拟环境下,只和当前的项目挂钩,与其他项目无关了。

2、Pycharm(情况二)

我们开发的时候,更多会使用到pycharm这个ide,新建项目的时候选择虚拟环境即可
学习Pycharm使用方法(一):Pycharm中Make available to all projects的含义是什么-LMLPHP
pycharm使用虚拟环境创建项目
inherit global site-packages:勾选上的话代表创建的新项目需要copy一份全局包到虚拟环境。
Make available to all projects:勾选上,表示,当在虚拟环境下安装包的时候,copy一份到全局。
前面文章中一只提到了全局包和虚拟环境里的包,在此解释一下他们的存放位置:
全局包存放在python安装目录下的\Lib\site-packages子目录里。
虚拟环境包安装在关联的项目目录下面的${虚拟环境名}\Lib\site-packages子目录里

三、项目部署时批量导包

在当前虚拟环境下,通过pip freeze > requirements.txt(名字随意)
在目标服务器上执行,pip install requirements.txt即可

综上,python项目间的包管理就是这么easy,当你要同时开发多个项目的时候,这个是必不可少的。

04-13 04:22