有没有办法将 pip 列入黑名单仅有的当我不在venv?

有没有办法将 pip 列入黑名单仅有的当我不在venv?

自从问了一个关于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并将其设置为 value true

  • 直接使用--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'

相关内容