自从问了一个关于Pip 与包管理器处理 Python 包的比较我学到了很多东西,特别是关于venv
模块的虚拟环境。这些天我几乎只安装软件包pip
里面虚拟环境。我几乎很少安装系统范围的 python 包。
pip install
不过,我总是害怕的一件事是,我可能会在没有意识到我没有激活的情况下运行 命令venv
。
有没有办法将 pip 列入黑名单仅有的当我不在venv
?
答案1
有一个全局选项require-virtualenv
操作时需要虚拟环境pip
。
实现此功能的几种方法(选一个):
作为配置选项(这是我的偏好),例如
~/.config/pip/pip.conf
或/etc/pip.conf
:[global] require-virtualenv = True
你也可以运行这个命令为您修改/创建配置文件:
pip config set global.require-virtualenv True
使用环境变量
PIP_REQUIRE_VIRTUALENV
并将其设置为 valuetrue
。直接使用
--require-virtualenv
命令行选项。
如果您尝试在 virtualenv 之外安装软件包,您将看到以下错误:
ERROR: Could not find an activated virtualenv (required).
如果您需要临时覆盖此选项以升级 pip 或在较旧的 Python 版本上安装 virtualenv,您可以在命令前面加上PIP_REQUIRE_VIRTUALENV=false
.
注意:在较旧的 pip 版本(< 22.0)中,输出和文档中似乎缺少此选项--help
,但它对我来说工作得很好。在 Python 2.7.x 上使用 20.3.4 作为最新版本进行了测试。
边注:公众号 704(撰写本文时的草案)是一项提案“[...] 建议像 pip 这样的包安装程序在 Python 3.13+ 上默认需要虚拟环境”。
答案2
您可以使用 shell 别名pip
在 venv 之外进行接管。
alias 'pip=cowsay "You are not in a virtual environment"'
在 virtualenv 启动文件中(例如,当您输入 venv 时获取的文件):
unalias 'pip'