Ubuntu18.04怪问题:/usr/bin/python: No module named pip

今天碰到一个非常奇怪的问题,记录一下,

问题引发的根源是无法更新pip,which pip命令不显示任何信息,

~/dev/opencv-4.0.1$ which pip
(nothing here.....???)
~/dev/opencv-4.0.1$ python -m pip install --upgrade pip
/usr/bin/python: No module named pip

于是找一下什么情况,

~/dev/opencv-4.0.1$ python3
Python 3.7.1 (default, Dec 14 2018, 19:28:38) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 12, in <module>
    import subprocess, tempfile, os.path, re, pwd, grp, os, time
  File "/usr/lib/python3.7/subprocess.py", line 152, in <module>
    import _posixsubprocess
ModuleNotFoundError: No module named '_posixsubprocess'
>>> exit()

~/dev/opencv-4.0.1$ which python
/usr/bin/python

~/dev/opencv-4.0.1$ stat /usr/bin/python
  文件:/usr/bin/python -> python2.7
  大小:9         	块:0          IO 块:4096   符号链接
设备:81ah/2074d	Inode:23598152    硬链接:1
权限:(0777/lrwxrwxrwx)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2019-02-02 09:41:39.325894931 +0800
最近更改:2018-04-16 22:31:18.000000000 +0800
最近改动:2019-01-18 16:01:33.608371793 +0800
创建时间:-

我自己都晕,明明which python显示的是python2.7,进去之后居然是python3.7.1,不过还好,后面显示了Anaconda,大概明白怎么回事。

解决办法:

~/dev/opencv-4.0.1$ sudo mv /usr/bin/python /usr/bin/python27

matthew@matthew-MS-7816:~/dev/opencv-4.0.1$ python
Python 3.7.1 (default, Dec 14 2018, 19:28:38) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> import cv2
>>> exit()

原因:两个python在竞争,有时是2.7,有时3.7,可能2.7调用了3.7的配置或资源,导致无法识别具体情况,把2.7版本的那个重新命令成python27就OK了。

不过发现which python, which pip还是什么都不显示,但在anaconda3/bin/下面是有python 和pip命令的。

<think>好的,用户现在遇到了PyCharm中因缺少distutils模块导致的ModuleNotFoundError报错问题,需要解决方案。根据之前的对话,我之前已经指导过如何在PyCharm配置PyInstaller,现在用户的问题转向了环境配置中的模块缺失。 首先,我需要回顾用户提供的引用内容。引用[1]、[2]、[3]、[4]都提到了在Ubuntu环境下安装PyCharm时出现的distutils相关模块缺失的错误,比如distutils.core、distutils.util、distutils.cmd等。用户现在的问题是解决这些ModuleNotFoundError,特别是在PyCharm中。 用户的操作系统是Ubuntu,可能是在虚拟机中,因为引用[3]提到了虚拟机。错误通常出现在新建项目或安装包时,比如点击安装packaging tools时+号是灰色的,或者安装Flask时报错。这些错误的根本原因是缺少Python的distutils模块,而distutils是Python标准库的一部分,但在某些Linux发行版中可能没有默认安装,尤其是当用户通过apt安装Python时,可能没有安装完整的标准库。 接下来,我需要思考解决方案。根据引用[2]和[3],用户尝试过安装python3-distutils和python3-pip,这可能解决了部分问题。但可能还有其他相关包需要安装。此外,可能需要确保Python开发环境完整,比如安装python3-dev或python3-venv,因为这些包可能包含distutils所需的文件。 另外,用户可能使用的是虚拟环境,而PyCharm在创建项目时会自动创建虚拟环境,这时候如果系统缺少必要的包,虚拟环境中也会缺失。因此,可能需要先安装系统级的distutils模块,或者在PyCharm中配置使用系统Python解释器而不是虚拟环境,但更建议修复系统环境。 可能的解决方案步骤包括: 1. 更新系统包列表,安装python3-distutils和python3-dev。 2. 安装pip,确保能够安装其他包。 3. 检查PyCharm中的Python解释器配置,确认使用的是系统Python还是虚拟环境,可能需要重新配置解释器路径。 4. 如果问题仍然存在,重新安装Python或使用venv模块创建虚拟环境。 需要注意,不同的Ubuntu版本可能包名有所不同,比如python3-distutils在Ubuntu 18.04和20.04中是否存在差异。同时,用户可能遇到权限问题,需要使用sudo命令安装系统包。 此外,用户在PyCharm中安装包时遇到的+号灰色不可点击的问题,可能是因为PyCharm无法找到可用的包管理工具,安装python3-pippython3-distutils后应该可以解决。同时,需要确保PyCharm中的项目解释器正确指向已安装的Python环境,并且有足够的权限。 可能还需要考虑用户是否在虚拟环境中,如果是,可能需要重新创建虚拟环境,或者在虚拟环境中安装distutils模块,但通常虚拟环境会继承系统Python的模块,所以更可能需要在系统环境中安装缺失的包。 总结解决方案步骤: - 安装系统级的distutils和相关开发工具。 - 确保pip已安装。 - 在PyCharm中重新配置解释器或重新创建项目环境。 - 测试安装包功能是否恢复。 最后,需要验证这些步骤是否有效,并处理可能出现的其他问题,比如依赖冲突或路径配置错误。</think>#### PyCharm中解决`ModuleNotFoundError: No module named 'distutils'`的完整方案 --- ### 一、问题根源分析 `distutils`是Python标准库的核心模块,负责构建和安装第三方包。在Ubuntu系统中,**默认安装的Python可能不包含完整的开发工具链**,导致以下场景报错: - 创建PyCharm新项目时提示`No module named 'distutils.core'`[^1] - 通过PyCharm安装包时出现`distutils.util`或`distutils.cmd`缺失[^3][^4] - PyCharm包管理界面(`+`号)灰色不可用 --- ### 二、系统环境修复(Ubuntu) #### 1. 安装缺失的依赖 ```bash # 更新软件源 sudo apt update # 安装核心开发工具链 sudo apt install python3-distutils python3-dev python3-venv # 确保pip可用 sudo apt install python3-pip ``` *注:若使用Python 3.8+,`python3-distutils`可能已集成到`python3-lib2to3`,可补充安装:* ```bash sudo apt install python3-lib2to3 ``` #### 2. 验证系统Python环境 ```bash # 检查distutils是否可导入 python3 -c "from distutils.core import setup" # 检查pip是否正常工作 pip3 --version ``` *若无报错则系统环境修复完成[^2]* --- ### 三、PyCharm配置修复 #### 1. 重置项目解释器 1. **关闭当前项目** → 重新打开PyCharm 2. 创建新项目时选择**Existing interpreter**,手动指定系统Python路径: ```text /usr/bin/python3 ``` *避免使用PyCharm自动生成的虚拟环境(venv)[^3]* #### 2. 修复已有项目 1. **File > Settings > Project: <名称> > Python Interpreter** 2. 点击齿轮图标 → **Show All...** → 删除旧解释器 3. 点击`+` → **System Interpreter** → 选择`/usr/bin/python3` --- ### 四、进阶问题处理 #### 1. 特定模块报错(如`distutils.cmd`) ```bash # 重新安装setuptools(依赖distutils) pip3 install --force-reinstall setuptools ``` #### 2. 强制重建PyCharm缓存 1. **File > Invalidate Caches...** → 勾选所有选项 2. 重启PyCharm --- ### 五、验证修复效果 1. 新建PyCharm项目,观察是否仍报错 2. 尝试通过`+`号安装包(如`flask`),确认界面可用性 3. 执行包含`import distutils`的脚本 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值