python -m pip install xxx和pip install xxx的区别

 更新时间:2025年12月26日 10:07:55   作者:WSSWWWSSW  
Python虚拟环境中使用python -m pip install与直接pip install有本质区别,下面我们就来详细的介绍一下这两者的区别,感兴趣的可以了解一下

背景:

最近执行python代码发现使用python -m venv vllm-ascend-env方式创建了python虚拟环境,也使用source vllm-ascend-env/bin/activate方式激活了环境,但是使用pip install时总是报错。

原因:

在 Python 环境中,python -m pip install … 和直接 pip install … 的核心区别在于pip 解释器的归属 / 执行上下文,这会直接影响包的安装路径、版本匹配,甚至导致 “装了但用不了” 的问题。

详解

在 Python 环境中,python -m pip install ... 和直接 pip install ... 的核心区别在于pip 解释器的归属/执行上下文,这会直接影响包的安装路径、版本匹配,甚至导致“装了但用不了”的问题。以下是详细拆解:

一、核心原理:谁在执行 pip?

命令形式执行逻辑
python -m pip install显式调用当前 python 指向的解释器,加载其内置的 pip 模块执行命令。
pip install调用系统 PATH 环境变量中第一个匹配的 pip 可执行文件,与 python 可能脱节。

二、具体差异(关键场景)

1. 版本匹配:避免“python 和 pip 不是一对”

  • 当系统安装了多个 Python 版本(如 Python 3.8、3.10、3.12,或 Anaconda/虚拟环境),python 命令的指向和 pip 命令的指向可能不一致:
    • 例:python --version 是 3.10,但 pip --version 绑定的是 3.8 → 直接 pip install 会把包装到 3.8 的目录,而 3.10 无法使用。
    • 而 python -m pip 强制使用当前 python 对应的 pip(3.10 的 pip),确保包装到 3.10 的 site-packages 目录,版本完全匹配。

2. 路径优先级:解决“pip 升级后自己失效”

升级 pip 本身时(如你的命令 --upgrade pip),这个差异尤为明显:

  • 直接 pip install --upgrade pip:
    升级的是 PATH 中 pip 可执行文件对应的 pip 版本,但升级过程中可能覆盖当前 pip 可执行文件,导致“升级后 pip 命令报错”(如 ModuleNotFoundError: No module named pip)。
  • python -m pip install --upgrade pip:
    基于当前 python 解释器升级其内置的 pip 模块,升级后的 pip 会直接关联到该 python,不会出现“升级后 pip 失效”的问题(因为是通过解释器加载模块,而非直接调用可执行文件)。

3. 虚拟环境:避免“装到全局环境”

在虚拟环境中:

  • 激活虚拟环境后,pythonpip 理论上会绑定到虚拟环境,但如果手动修改过 PATH,或忘记激活虚拟环境:
    • pip install 可能穿透到全局 Python 环境(装到系统级 site-packages);
    • python -m pip 则严格遵循当前 python 指向(虚拟环境内的解释器),确保包装在虚拟环境中。

4. Windows 特殊场景:解决“pip 命令找不到”

Windows 系统中,Python 安装时若未勾选“Add Python to PATH”,pip 可执行文件不会出现在 PATH 中 → 直接敲 pip 会提示“不是内部或外部命令”,但 python -m pip 仍能正常执行(因为 python 若能调用,就能加载其内置的 pip 模块)。

三、总结:什么时候该用哪种?

推荐用 python -m pip可直接用 pip install
系统有多个 Python 版本系统仅装一个 Python,且 pip 和 python 版本一致
升级 pip/setuptools/wheel 本身简单安装第三方包(如 pip install requests)
虚拟环境中(尤其是忘记激活时)确认 pip --version 和 python --version 匹配
Windows 系统(避免 PATH 配置问题)非 Windows 系统(如 Linux/macOS)且环境干净

四、验证方法(避免踩坑)

执行以下命令,确认 pippython 归属一致:

# 查看 python 指向的版本
python --version
# 查看 pip 绑定的 python 版本
pip --version
# 用 python -m 查看 pip 版本(绝对准确)
python -m pip --version

如果 pip --version 显示的 Python 版本和 python --version 不一致,必须用 python -m pip,否则包会装错位置。

最终结论

你的命令是升级 pip/setuptools/wheel,强烈建议加 python -m:

python -m pip install --upgrade pip setuptools wheel

这能避免升级后 pip 失效、版本不匹配等问题,是跨平台、多版本环境下最稳妥的写法。

到此这篇关于python -m pip install xxx和pip install xxx的区别的文章就介绍到这了,更多相关python -m pip install xxx和pip install xxx内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pytorch随机采样操作SubsetRandomSampler()

    pytorch随机采样操作SubsetRandomSampler()

    这篇文章主要介绍了pytorch随机采样操作SubsetRandomSampler(),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python微信跳一跳游戏辅助代码解析

    python微信跳一跳游戏辅助代码解析

    本篇文章给大家详细讲解了用python写的一个微信跳一跳辅助脚本的源码,对此有兴趣的朋友参考下吧。
    2018-01-01
  • Python配置文件管理之ini和yaml文件读取的实现

    Python配置文件管理之ini和yaml文件读取的实现

    本文主要介绍了Python配置文件管理之ini和yaml文件读取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python实现微信中找回好友、群聊用户撤回的消息功能示例

    Python实现微信中找回好友、群聊用户撤回的消息功能示例

    这篇文章主要介绍了Python实现微信中找回好友、群聊用户撤回的消息功能,结合实例形式分析了Python基于微信itchat模块实现针对撤回消息的查看功能相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • 使用Python实现生成对角矩阵和对角块矩阵

    使用Python实现生成对角矩阵和对角块矩阵

    这篇文章主要为大家详细介绍了如何使用Python实现生成对角矩阵和对角块矩阵,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • python使用自定义钉钉机器人的示例代码

    python使用自定义钉钉机器人的示例代码

    这篇文章主要介绍了python使用自定义钉钉机器人,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python 爬取吉首大学网站成绩单

    python 爬取吉首大学网站成绩单

    python简单爬虫,爬取吉首大学成绩单,学校的成绩单居然不支持导出,太坑了,算个绩点居然还要手打,我吐了.花2个多小时写了此python程序来生成可方便求和平均的Excel文件,帮助JSU学子脱离手算烦恼...
    2021-06-06
  • Python实现Gif图片分解的示例代码

    Python实现Gif图片分解的示例代码

    这篇文章主要为大家详细介绍了如何利用Python语言实现Gif图片分解功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手尝试一下
    2022-08-08
  • Python使用内存缓存实例分享

    Python使用内存缓存实例分享

    Python中的内存缓存是一种将计算结果存储在内存中,以便在后续调用时快速获取结果的技术。通过使用装饰器和字典等数据结构,可以轻松实现内存缓存功能,提高程序的执行效率。
    2023-09-09
  • python multiprocessing多进程变量共享与加锁的实现

    python multiprocessing多进程变量共享与加锁的实现

    这篇文章主要介绍了python multiprocessing多进程变量共享与加锁的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论