出现 externally-managed-environment 错误的原因是你的操作系统或 Python 环境开启了 PEP 668 保护机制。即使你创建了新的 conda 虚拟环境,系统仍然标记该环境为“外部管理的”,不允许直接通过 pip 安装包。这是为了保护系统级的 Python 环境不被破坏。

解决方案:

1. 使用 --break-system-packages

你可以通过添加 --break-system-packages 参数强制 pip 安装包。这将绕过 PEP 668 保护机制,但要谨慎使用,因为可能会影响系统或虚拟环境的稳定性。

pip install pymilvus jina --break-system-packages
2. 使用 conda install 安装包

优先使用 conda 来安装包,这样不会触发 externally-managed-environment 错误。你可以尝试通过 conda-forge 频道来安装包:

conda install -c conda-forge pymilvus jina
3. 创建一个不受 PEP 668 管理的虚拟环境

你可以通过 venv 创建一个完全独立于系统管理的虚拟环境。这样做可以避开 PEP 668 机制。

# 创建 venv 虚拟环境
python3 -m venv myenv

# 激活虚拟环境
source myenv/bin/activate

# 安装所需包
pip install pymilvus jina

总结

  • 推荐做法:首先使用 conda-forge 来安装包。
  • 强制方式:使用 --break-system-packages 绕过保护机制。
  • 隔离方式:使用 venv 创建完全隔离的虚拟环境来避开系统保护。