虽然 Python 的 virtualenv 可以为 Python 的工程提供很好的环境支持免去了很多环境依赖上的麻烦,但是若是项目太多,还是要构建很多虚拟环境,而且每次进不同的项目都需要手动切换非常麻烦,autoenv 和 pipenv可以为 Python 的工程提供 virtualenv 自动构建、自动激活以及灵活的依赖管理。
使用 autoenv 自动激活 env 环境
autoenv 可以在进入项目之后自动检测项目目录的 .env 文件并激活项目所需的 virtualenv 环境,这样能够保证每次切换项目都能自动进入项目自身依赖的虚拟环境。
1 | brew install autoenv |
使用 pipenv 自动构建环境和依赖
pipenv 是结合了 virtualenv 和 pip 的构建工具,这样就省去了分开使用二者的麻烦,而且 pipenv 借鉴了开源社区众多包管理工具的优秀特性,真可谓集中家之长来为 Python 提供了一个优秀的包管理工具,其作者就是大名鼎鼎 requests 的作者 kennethreitz。
确保系统上已经有了 Python 和 pip :
1 | $ python --version |
安装 pipenv :
1 | $ pip install --user pipenv |
--user 选项将 pipenv 安装在系统的用户目录,避免使用 sudo 权限以及破坏系统原有的依赖,在 Linux 和 macOS 中可以使用 python -m site --user-base 查看 pip 用户目录在什么地方:
1 | $ python -m site --user-base |
一般情况下 Python 的用户 bin 目录并没有加入的 shell bin 中,找到该目录并加入到用户 path 中:
1 | export PATH=$PATH:/Users/zhyq0826/Library/Python/2.7/bin |
pipenv 结合了 virtualenv 和 pip,借助 pipenv 可以一键创建 virtualenv 环境,也就是说每个项目都可以拥有自己单独的虚拟环境和依赖安装了。
1 | $ cd myproject |
如果项目中已经有了 requirements.txt pipenv 会自动进行转换生成 Pipfile 文件,该文件是 pipenv 用来跟踪依赖包信息的文件。
如果出现:
1 | Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies. |
说明在安装过程中有错误,可以按照提示进行操作:
1 | pipenv install --skip-lock |
在我的 Pro turbo-markdown 目录上安装的提示信息:
1 | Creating a virtualenv for this project… |
把输出的 env 的目录送到 .env 文件,下次 cd 进入项目目录之后会自动激活:
1 | echo "source /Users/zhyq0826/.local/share/virtualenvs/turbo-markdown-BmR5qYdY/bin/activate" >>.env |
小结
好工具的使用要趁早,早用早解放,省时又省力😁。