Python错误 - “ImportError:无法导入名称'dist'”

时间:2018-05-06 14:50:07

标签: python linux

我在Ubuntu 16.04上,我得到了:

session.run(y_out, feed_dict={X: X_test})

当我用python运行任何东西时。这特别适用于尝试运行“pip freeze”。怎么办?

6 个答案:

答案 0 :(得分:22)

试试吧

sudo apt install python3-distutils

答案 1 :(得分:9)

在Ubuntu(我的版本为16.04)上安装Python 3.8之后,我遇到了这个问题

$ lsb_release -d
Description:     Ubuntu 16.04.6 LTS
  1. 重现错误

只需尝试导入distutils

$ python3 -c "from distutils import sysconfig"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: cannot import name 'sysconfig' from 'distutils' (/usr/lib/python3.8/distutils/__init__.py)

$ sudo apt install python3-distutils          
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package python3-distutils

找不到软件包python3-distutils

$ sudo apt install python3-distutils          
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package python3-distutils
  1. 列出可用的distutils

有用的是使用正则表达式列出了所有distutil软件包

$ apt list *distutils*
Listing... Done
python-distutils-extra/xenial,xenial 2.39-1 all
python-stsci.distutils/xenial,xenial 0.3.7-4 all
python3-distutils-extra/xenial,xenial 2.39-1 all
python3-stsci.distutils/xenial,xenial 0.3.7-4 all
python3.7-distutils/xenial,xenial 3.7.8-1+xenial1 all
python3.8-distutils/xenial,xenial 3.8.3-1+xenial1 all
python3.9-distutils/xenial,xenial 3.9.0~b4-1+xenial1 all
  1. 安装正确的distutils软件包

对于我的Python 3.8,我选择了python3.8-distutils并且有效

$ sudo apt-get install -y python3.8-distutils

答案 2 :(得分:0)

抓住这个战利品(类似问题): https://github.com/pypa/pip/issues/5367

可能的解决方法:

  • https://www.python.org/
  • 下载Python源代码
  • 解压缩源代码
  • 安装以下依赖项:

    sudo apt-get install zlib1g-dev(需要编译Python)

  • 并安装:

sudo apt-get install libreadline -gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev(Pip需要发出SSL请求)

  • 编译并安装Python:

/配置

make install

  • 应安装带有Pip的Python 3.6。

完全归功于jonbesga。

答案 3 :(得分:0)

由于每次我每六个月更新ubuntu版本都会遇到此问题,然后偶然发现完全相同的SO结果,这就是我的解决方案。

如果此处列出的其他解决方案不起作用(安装python3-distutils),则可能是由于系统和virtualenv之间的python版本不同。

简单的解决方案是销毁您的virtualenv,然后从头开始重新创建它。

答案 4 :(得分:0)

我的案例是当我升级Ubuntu 18-> 19。 因此,它重新安装了python,而我需要做的是:

  1. 删除旧的虚拟环境

  2. 创建一个新的

  3. 通过pip进入安装要求

答案 5 :(得分:0)

已解决:我刚在 2 年前安装的虚拟环境中遇到这个问题,使用的是 python3.7

从 venv 运行 pip3python3.7 -c "from distutils import dist, sysconfig",我收到错误 ImportError: cannot import name '分布

使用系统python 3.9,此错误消失。

我解决了将 /usr/lib/python3.9/distutils 复制到 python3.7 虚拟环境中的问题。