必须先激活虚拟环境再执行pip install,否则包将安装到系统site-packages;激活后终端提示符显示环境名(如(myenv)),且which python或where python应指向虚拟环境目录。

确认虚拟环境已激活再执行 pip install
没激活就装,包会进系统 Python 的 site-packages,而不是你想要的隔离环境里。终端提示符前必须看到括号里的环境名(比如 (myenv)),否则所有 pip install 都是无效操作。
- macOS/Linux:运行
source myenv/bin/activate - Windows CMD:运行
myenv\Scripts\activate.bat - Windows PowerShell:运行
myenv\Scripts\Activate.ps1(如报执行策略错误,先运行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser)
激活后用 which python(macOS/Linux)或 where python(Windows)验证路径是否指向 myenv 目录内,这是最可靠的判断方式。
pip install 命令本身不需要额外参数
只要环境已激活,pip install 默认就作用于当前虚拟环境,不需要加 --user、--target 或指定 Python 解释器路径。
- 装最新版:
pip install requests - 装指定版本:
pip install numpy==1.26.4 - 装兼容版本:
pip install pandas>=2.2.0 - 从本地 wheel 安装:
pip install ./dist/mylib-0.1.0-py3-none-any.whl
注意:pip install 不会自动升级 pip 自身——如果提示“You are using pip version X, but version Y is available”,需手动运行 python -m pip install --upgrade pip,否则可能因旧版 pip 解析依赖失败。
requirements.txt 安装要小心路径和内容
pip install -r requirements.txt 看似简单,但容易出错的点集中在两处:文件路径不对,或文件里混入了 Conda 专用语法(如 channel、dependencies 块)。
- 确保
requirements.txt在当前工作目录下,或用绝对路径:pip install -r /full/path/to/requirements.txt - Conda 的
environment.yaml不能直接给 pip 用;需人工提取dependencies:下纯 PyPI 包名,转成每行一个package==version的格式 - 避免写
-e git+https://...这类开发模式语法,除非你真需要 editable 模式且已装好 Git
生成干净的 requirements.txt 推荐用 pip freeze > requirements.txt,但注意它会导出所有已装包(包括间接依赖)。若只要显式安装的包,改用 pipreqs ./。
装不上时优先查 pip 和 Python 版本匹配性
很多“安装失败”其实不是网络或权限问题,而是包本身不支持当前 Python 版本。比如 black==24.0.0 要求 Python ≥3.9,而你的虚拟环境是 3.8,就会卡在 “Could not find a version that satisfies the requirement”。
- 先运行
python --version和pip --version,确认两者来自同一环境 - 查包的兼容性:去 PyPI 页面(如
https://pypi.org/project/requests/)看 “Requires: Python >=3.7” 这类说明 - 临时降级尝试:
pip install requests==2.28.2(该版本支持到 Python 3.7)
真正麻烦的是 C 扩展包(如 numpy、cryptography)在无编译工具的 Windows 上报错。此时别硬扛,直接换预编译 wheel:pip install --only-binary=all numpy,或者提前装好 Visual Studio Build Tools。


















