照例的唠叨:
pip freeze > requirements.txt
,生成项目B的时候就会把库M1也写在requirements.txt里面。其实是毫无用处的以上两种情况,用虚拟环境(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中。
有个知乎专栏上已经有人写了两者的区别和优点了,很详细,推荐去看: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]