virtualenv/venv 和 pip
大部分试图简化 Python 虚拟环境和依赖管理工作流程的新工具都不够稳定,继续使用 virtualenv/venv 和 pip 这样的底层工具也是一个不错的选择,而且大多数人也是这么做的。它们虽然用起来有一点麻烦,但至少更可靠。 基本概念下面是一些基本概念:
使用 virtualenv/venv 管理虚拟环境venv 模块如果你使用 Python 3(具体说是 Python 3.3 及以上版本),推荐使用标准库内置的?venv 模块替代 virtualenv,两者的使用方式基本相同,唯一不同的是创建虚拟环境的方式。 如果你使用 Python 2,那就只能选择 virtualenv,你需要额外安装它。我先假设你已经安装了 pip,因为在 Python 2 >=2.7.9 或 Python 3 >=3.4 这些版本的 Python 会一并安装 pip,其他版本可以参考文档的安装部分。在 Windows 下使用下面的命令安装 virtualenv: $ pip install virtualenv
其他操作系统可以使用下面的命令安装: $ sudo pip install virtualenv
尽管不推荐使用 sudo pip?的方式安装 Python 包,但这仍然是最简单和统一的方式。更安全的方式是使用系统包管理器来安装,或是使用 pip --user 方式安装。 创建虚拟环境假设我们的项目名叫 snow,创建对应的文件夹然后切换到根目录: $ mkdir snow
$ cd snow
如果使用 venv,那么使用下面的命令创建虚拟环境,其中 snow-venv 是虚拟环境的名字,也作为创建的虚拟环境文件夹名称,你可以自由修改(通常会使用 venv 或 env 作为虚拟环境名): $ python -m venv snow-venv
如果使用 virtualenv,则使用下面的命令: $ virtualenv snow-venv
这会在当前目录创建名为 snow-venv 的虚拟环境文件夹,你需要把这个文件夹名称加入 .gitignore 文件以便让 Git 忽略。 激活虚拟环境通过执行对应的激活脚本来激活虚拟环境,不同操作系统的激活命令(激活脚本及路径)有一点不同。Windows(CMD.exe)使用下面的命令激活: $ snow-venvscriptsactivate
Linux 和 macOS(bash/zsh)使用下面的命令: $ source snow-venv/bin/activate
或: $ . snow-venv/bin/activate
类似的,其他终端程序可以执行对应的激活脚本来激活虚拟环境。 激活虚拟环境以后,命令行提示符前会显示当前虚拟环境的名字: (snow-venv) $
使用 deactivate 命令可以退出虚拟环境。 使用 pip 管理依赖简单列一下基本用法,虽然大部分人都很熟悉了……以 Flask 为例,首先是安装依赖: (snow-venv) $ pip install flask
更新依赖: (snow-venv) $ pip install --upgrade flask
或是: (snow-venv) $ pip install -U flask
卸载依赖: (snow-venv) $ pip uninstall flask
除此之外,还有 pip show flask 命令可以查看某个依赖的详细信息,pip list 列出所有依赖。 下面的命令可以手动生成依赖列表: (snow-venv) $ pip freeze > requirements.txt
如果你需要手动开发依赖和生产依赖,可以手动把开发相关的依赖放到单独的文件,比如 requirements-dev.txt。 当你需要在新的机器创建程序运行环境时,(创建虚拟环境后)只需要使用下面的命令从依赖文件安装所有依赖: (snow-venv) $ pip install -r requirements.txt
如果安装包的时候速度太慢,可以考虑设置 PyPI 国内镜像,具体参考这篇文章。 从其他工具迁移回来如果你想从 Pipenv 迁移回来,方法很简单,只需要生成一个 requirements.txt 文件即可。使用下面的命令生成一般依赖列表: $ pipenv lock -r
使用下面的命令输出开发依赖列表: $ pipenv lock -r --dev
然后手动把两个命令的输出保存为 requirements.txt 和 requirements-dev.txt。 从 Poetry、Conda 等其他工具迁移回来可以使用?pipreqs?来生成 requirements.txt,它会基于项目代码的导入语句来生成依赖列表。 在下一篇文章,我会介绍一些辅助工具来搭配 virtualenv/venv+pip 使用,让虚拟环境和依赖管理更方便,比如 virtualenvwrapper、pip-tools 等。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |