Python虚拟环境virtualenv&Pipenv

照例的唠叨:

  1. 在开发不同的项目时,用到的Python版本不一样,或者用到的库不一样但import时名称相同,或者用到的是同一个库但是版本不同且存在兼容问题,怎么办呢。
    在没有引入虚拟环境时,前者好解决,可以选择运行时的Python解释器,后两者就尴尬了,只能先uninstall一个,再install一个,这个体验好差;
  2. 项目开发完成后,生成项目所依赖的库。
    项目A使用了M1,项目B使用了库M2,然后使用pip freeze > requirements.txt,生成项目B的时候就会把库M1也写在requirements.txt里面。其实是毫无用处的

以上两种情况,用虚拟环境(virtualenv)就可以完美解决。

1. virtualenv的使用

版本:Python 3.7
OS: Linux

从Python3.3开始,virtualenv已经集成到env模块下的标准库了,所以不需要安装,直接拿来用就好

# 使用venv命令创建虚拟环境,虚拟环境文件所在的目录是venv
python -m venv venv
# 激活虚拟环境,激活成功后,当前路径的名称会改变
. venv/bin/activate
# 安装项目依赖(在已激活的虚拟环境中)
pip install ···
# 执行脚本(在已激活的虚拟环境中)
python test.py
# 退出虚拟环境(在已激活的虚拟环境中)
deactivate
# 生成项目依赖
pip freeze > requirements.txt
# ##############
# 安装项目依赖
pip install -r requirements.txt

以上是一个项目开发过程中管理依赖的常规操作。其实就是将项目所安装的依赖放在了venv目录下的Lib/site_packages中。

2. Pipenv相比virtualenv的优点及使用

有个知乎专栏上已经有人写了两者的区别和优点了,很详细,推荐去看:https://zhuanlan.zhihu.com/p/37581807
简单来说,Pipenv是让使用起来更方便的管理虚拟环境和项目依赖的一套工具。然后我自己也如以上virtualenv格式流水写下用法,对比可知。
版本:Python 3.7
OS: Linux

# 需要先安装pipenv
pip install pipenv
# 创建虚拟环境--不用执行命令
# 激活虚拟环境--可以不用执行命令
# 安装项目依赖(第一次安装时会比较慢,因为会包含创建虚拟环境的过程)
pipenv install ···
# 执行脚本
# # 两种方式,第一种:
pipenv run python test.py
# # 第二种,先激活虚拟环境,然后再跑脚本:
pipenv shell
python test.py
# 退出虚拟环境(若不激活,也不用退出)
exit
# 生成项目依赖--可以不用执行命令
# # 使用pipenv install这个命令时,会自动创建Ppfile这个文件,然后也会自动创建Pipfile.lock,也可以手动创建lock文件
pipenv lock
# ##############
# 安装项目依赖,会从Pipfile.lock中安装依赖包
pipenv install

相比,Pipenv操作起来更简便一些,然后可能更省些空间。然后还有一点是,pipenv install 命令会自动检测你的项目目录里面有木有requirements.txt这个文件,有的话会根据requirements.txt把包给安装了,野心可嘉[/笑cry]

Reference

  1. Python-venv
  2. virtualenv
  3. Pipenv中文文档

你可能感兴趣的:(python)