pip与pip3的区别及Anaconda环境中python/python3调用异常问题
问题拆解:Anaconda环境中pip/pip3与python/python3的匹配问题
一、为什么会出现安装后调用异常的现象?
这核心原因是你当前激活的Anaconda环境已经修改了命令映射,但python3/pip3并没有指向这个环境里的工具,具体来说:
- 当你在Anaconda中切换到Python3.5的环境时,Anaconda会自动调整你的系统
PATH环境变量,把当前环境的二进制文件目录(比如~/anaconda/envs/your_env/bin/)放到最优先的位置。这时候你输入python和pip,调用的都是这个3.5环境里的解释器和包管理工具。 - 而
python3和pip3这两个命令,大概率还是指向你系统全局安装的Python3版本(比如/usr/bin/python3),而非Anaconda环境里的3.5。所以你用pip3 install itchat是把包装到了系统全局的Python3环境中,当你执行python3时,调用的也是这个全局环境——如果这个全局环境的Python版本和3.5不兼容,或者缺少依赖,就会出现异常。 - 相反,
pip install itchat是把包安装到当前激活的Anaconda 3.5环境里,python命令调用的也是这个环境的解释器,自然能正常加载包。
你可以验证一下:在激活环境后,分别执行以下命令,查看它们的路径:
which python which python3 which pip which pip3
你会发现python和pip的路径指向Anaconda环境目录,而python3/pip3指向系统全局路径。
二、python与python3存在差异的缘由?
这个差异是Python版本迭代过程中为了兼容而产生的历史遗留:
- 在Python3刚发布的早期,Python2还是行业主流,大部分系统默认把
python命令绑定到Python2,为了不影响原有Python2程序的运行,新安装的Python3就用python3作为命令名,对应的包管理工具就是pip3(对应Python2的pip)。 - 但随着Python2停止维护,越来越多的环境(比如Anaconda、Ubuntu 20.04+、Python3-only的虚拟环境)开始把
python默认映射到Python3。这时候python和python3可能指向同一个解释器,也可能因为环境配置不同(比如系统全局和Anaconda环境共存)而指向不同版本,就像你遇到的情况。
简单来说:python和python3的差异本质是不同环境下命令名的映射规则不同,核心是为了区分Python2和Python3的解释器,避免版本冲突。
内容的提问来源于stack exchange,提问作者Boooooooooms
相关产品推荐
相关产品推荐

