开发过程中每个项目之间的依赖版本可能会有差异,如果在一台主机下开发多个项目,此时若两个项目的Flask版本要求不同,则可以通过创建虚拟环境来隔离多个项目之间的依赖关系。
Pipenv、Virtualenv、Poetry 等均是项目依赖的打包工具,但各有其优缺点,对于这些打包工具在Python 社区的讨论也掀起了不小的风浪。在此不评判每个工具的好坏,因为功能不尽相同,读者均可以根据自己喜好去选择。
Pipenv 的方便之处只用过的人才知道,当然使用它遇到的 bug 也只有真正遇到的人才知道,但好在笔者在使用过程中没有遇到什么大的障碍。目前 Pipenv 和 Virtualenv 同为 Pypa 项目组下的官方的项目,也就是官方认定的打包工具,希望未来能更加给力。
命令 | 功能 |
---|---|
install | 创建虚拟环境并安装模块 |
shell | 激活虚拟环境 |
graph | 查看已安装的模块 |
uninstall | 卸载已安装的模块 |
--venv | 获取当前虚拟环境位置 |
--where | 获取当前项目根目录 |
Virtualenv 提供了项目环境隔离的功能,但按照依赖任然需要使用 pip 按照,使用 Virtualenvwapper 可以集中管理这些项目的虚拟环境。虽然有了 Virtualenvwapper 这个助手,但可见他的操作还是会比 Pipenv 复杂很多。
# virtualenv 使用
# 创建虚拟环境
cd project_dir
virtualenv venv
# 指定虚拟环境
virtualenv -p /usr/bin/python3.7 venv
# 激活虚拟环境之后使用 pip 安装依赖
source venv/bin/activate
# virtualenvwrapper使用
pip install virtualenvwrapper
pip install virtualenvwrapper-win
# 写入虚拟环境的目录至环境变量 ~/.bashrc
export WORKON_HOME=~/Envs
source /usr/local/bin/virtualenvwrapper.sh
source ~/.bashrc
# 创建虚拟环境
mkvirtualenv venv
mkvirtualenv --python=/usr/local/python3.7.9/bin/python venv
# 退出虚拟环境
deactivate
# 删除虚拟环境
rmvirtualenv venv
Poetry 这个工具笔者用的不多,不做推荐和评论,有兴趣可以自己尝试。
命令 | 功能 |
---|---|
new | 创建项目脚手架 |
init | 基于已有的项目代码创建pyproject.toml文件 |
install | 安装依赖库 |
update | 更新依赖库 |
add | 添加依赖库 |
remove | 移除依赖库 |
show | 查看具体依赖库信息 |
build | 构建tar.gz或wheel包 |
publish | 发布到PyPI |
run | 运行脚本和代码 |
此类的依赖管理工具还有很多,综上,笔者个人还是推荐 Pipenv,并需要升级到目前的最新版Pipenv 2020.11.15,版本号也很喜欢,期待能有后续。