简介
为了避免污染系统环境下的 Python, 我们在利用 Python 开发项目时, 通常会在项目的根目录创建 python 虚拟环境.
阅读官网文档, python3.6 + 以上, python 自带了 venv 命令可以快速构建虚拟环境, 你只需在 Google 中搜索 [python3.x venv docs] 便可以搜索到对应版本 Python 下, venv 的使用文档.
使用 venv 创建虚拟环境:
python -m venv venv
这种方式有个问题就是无法创建不同版本的 Python 虚拟环境, 比如我系统中只有 python3.7, 就无法创建 python3.8 的虚拟环境.
这也是我目前遇到的问题, 一些比较新的项目, 其要求 python3.8+, 而我系统只有 python3.7, 此时就需要使用 pipenv 了, 先安装一下:
pip install pipenv
pipenv 基本使用
pipenv 用法比较多, 我琢磨了一下, 要用好 pipenv, 了解起概念和基本用法就好了.
最基本的命令便是创建不同 Python 版本的虚拟环境.
在项目根目录下, 运行下面 pipenv 命令:
pipenv --python 3.8.8
pipenv 会扫描系统中相应的位置, 判断 python3.8.8 是否已经有了, 如果没有, 则自动下载 python3.8.8 并为项目创建 python3.8.8 版本的虚拟环境.
此外, 还有一个知识点:
如果项目根目录中有 Pipfile, 怎创建虚拟环境时, 会根据 Pipfile 中的信息生成虚拟环境, 比如安装相应的第三方库, 如果没有, 怎以默认的形式去生成虚拟环境, 然后创建 Pipfile, 通过 VsCode 打开 Pipfile, 其形式如下:
- [[source]]
- url = "https://pypi.org/simple"
- verify_ssl = true
- name = "pypi"
- [packages]
- numpy = "==1.21.5"
- [dev-packages]
- [requires]
- python_version = "3.8"
source 用来设置仓库地址, 即从哪下载虚拟环境所需要的包
packages 用来指定项目依赖的包, 即你安装了的包
dev-packages 用来指定开发环境需要的包, 这类包只用于开发过程, 不用与生产环境, 比如单元测试相关的包, 只在开发阶段有用, 这样分开便于管理.
requires 中指定目标 Python 版本
pipenv 会默认将虚拟环境安装在 ~/.virtualenvs 中, 通过 pipenv --venv 可以直接查看当前项目虚拟环境的路径, 如果我们需要使用 PyCharm 编写项目时, 可以根据这个目录, 直接在 PyCharm 中设置使用该虚拟环境:
pipenv 常规命令如下:
- # 安装命令
- pipenv install requests #在项目所在虚拟环境中安装 requests
- pipenv install parsel==1.3.1 #安装 parsel 并指定其版本
- pipenv install --dev nose2 #安装 nose2 包并将其关联为只在开发环境中需要的包
- # 卸载命令
- pipenv uninstall requests #在项目所在虚拟环境中卸载 requests
- pipenv uninstall --all #从虚拟环境中移除所有已安装的包, 但 Pipfile.lock 文件不受影响
- pipenv uninstall --all--dev #从虚拟环境中卸载所有开发包, 并从 Pipfile 文件中移除这些包
- # 更新命令
- pipenv update requests #在项目中更新 requests 包
- pipenv update #更新项目中所有的包
- pipenv update --outdated #查看现有包哪些已经过期
- # 查看命令
- pipenv graph #显示现有的依赖包
- pipenv lock #更新 Pipfile.lock 文件锁定当前环境的依赖版本
- pipenv shell
在我现在的工作流中, 除了使用 pipenv 创建虚拟环境后, pipenv 其他命令都不太使用, 因为已经比较熟悉 pip 命令了, 不想再去背 pipenv 的命令.
当 pipenv 创建完虚拟环境后, 我会通过 pipenv shell, 在当前 terminal 中激活虚拟环境, 然后直接在其中使用 pip, 这样, 从 venv 换成 pipenv 几乎没有任何切换成本了, 具体的流程为:
- pipenv --python 3.8.8
- pipenv shell
- pip install requests
结尾
好啦, 关于 pipenv 了解到这个程度就够用了, 至于其他的细节, 没遇到问题就不深入研究了, 考虑投入产出比嘛.
参考文章:
Pipenv 使用入门
来源: http://developer.51cto.com/art/202201/697639.htm