Pip: ImportError:无法导入名称“sysconfig”(Ubuntu 16.04)

创建于 2018-05-03  ·  16评论  ·  资料来源: pypa/pip

  • 点子版本:
  • Python版本:3.6.5
  • 操作系统:Ubuntu 16.04.4 LTS

描述:

与 #5356 类似的问题,但使用不同版本的 Ubuntu。 #5356 中提出的解决方案并不能解决这个版本的 Ubuntu 的问题

在干净版本的 Ubuntu 中从jonathonf存储库安装 Python 3.6 后,我在尝试安装Pip时发现了以下错误

请注意,尝试使用默认提供的 Python 版本 (3.5.2 ) 安装 Pip 不会出现任何问题。

我跑了什么:

python3.6 get-pip.py

错误信息:

Traceback (most recent call last):
  File "get-pip.py", line 20649, in <module>
    main()
  File "get-pip.py", line 197, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip._internal
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/__init__.py", line 42, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/cmdoptions.py", line 16, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/index.py", line 25, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/download.py", line 35, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/locations.py", line 10, in <module>
ImportError: cannot import name 'sysconfig'
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 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "get-pip.py", line 20649, in <module>
    main()
  File "get-pip.py", line 197, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip._internal
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/__init__.py", line 42, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/cmdoptions.py", line 16, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/index.py", line 25, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/download.py", line 35, in <module>
  File "/tmp/tmpodo51doi/pip.zip/pip/_internal/locations.py", line 10, in <module>
ImportError: cannot import name 'sysconfig'

我找到的解决方法

  • 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:
./configure
make
make install
  • 应安装带有 Pip 的 Python 3.6。
downstream auto-locked support

最有用的评论

我也看到了类似的错误。

$ sudo python3.6 get-pip.py
Traceback (most recent call last):
  File "get-pip.py", line 20061, in <module>
    main()
  File "get-pip.py", line 194, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/__init__.py", line 26, in <module>
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/utils/__init__.py", line 23, in <module>
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/locations.py", line 9, in <module>
ImportError: cannot import name 'sysconfig'

但是,通过安装python3-distutils可以避免此错误。
sudo apt-get install python3-distutils

所有16条评论

如果您愿意阅读我的问题的描述,您会发现我确实已经看过那个问题了。 那里提出的解决方案不适用于此版本的 Ubuntu。

没有必要粗鲁。 但对我来说,在你的上面编译 python 并不是一个解决方案。

那个导入错误是原因。 我稍后会尝试重现。

@jonbesga感谢您的解决方法,在使用完全相同版本的 python 3.6 和 ubuntu 时也遇到了这个问题......

@Tarliton我同意这不是解决方案。 我将其重命名为一种解决方法。

关于粗鲁,对此感到抱歉,但是告诉我查看我在问题中已经提到的问题表示您在没有阅读我的问题的情况下发表了评论。

@jonbesga我的错,但我应该说尝试运行提到的另一个问题的命令。
喜欢:

python -c "from distutils import sysconfig"

我只是在带有 Ubuntu 16.04.2 的虚拟机中做到了这一点,没有任何问题。 并安装了点子。
我稍后会尝试 16.04.4。

我可以确认在 16.04.4,

python3.6 -c "from distutils import sysconfig"

产生以下错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: cannot import name 'sysconfig'
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 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: cannot import name 'sysconfig'

尝试从ppa:deadsnakes/ppa而不是从ppa:jonathonf/python-3.6安装 Python 3.6,它正在正确安装 Pip。 看起来 jonathonf 的版本在某种程度上被破坏了。

编辑:刚刚注意到堆栈溢出答案中的一些评论通过 jonathonf 存储库解决了这个问题

我可以确认删除ppa:jonathonf/python-3.6然后添加ppa:deadsnakes/ppa并重新安装python3.6可以在 Linux Mint 18.3 上解决此问题。

有关删除当前 PPA 的信息: https ://askubuntu.com/a/173209/823909
添加新的 Python3.6 PPA: https ://askubuntu.com/questions/865554/how-do-i-install-python-3-6-using-apt-get

@tomrunia我建议您将链接更改为https://askubuntu.com/a/310 ,因为您当前的链接没有指向最佳答案。

我也看到了类似的错误。

$ sudo python3.6 get-pip.py
Traceback (most recent call last):
  File "get-pip.py", line 20061, in <module>
    main()
  File "get-pip.py", line 194, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/__init__.py", line 26, in <module>
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/utils/__init__.py", line 23, in <module>
  File "/tmp/tmpxvd4x9zn/pip.zip/pip/locations.py", line 9, in <module>
ImportError: cannot import name 'sysconfig'

但是,通过安装python3-distutils可以避免此错误。
sudo apt-get install python3-distutils

@wakiyamap这似乎是一个适用于 Ubuntu 18.04 LTS 的#5356 的解决方案。 但是,在 Ubuntu 16.04.4 LTS 中,该软件包已被重命名并且不能解决问题。

@jonbesga我使用了这个版本。
Ubuntu Xenial (16.04 LTS) (GNU/Linux 4.4.94-mainline-rev1 aarch64)
ppa:jonathonf/python-3.6

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"

CPU不同,所以可能与这种情况无关。
对不起。

我在 Ubuntu 16.04 上遇到了类似的问题(特别是“from distutils import dist, sysconfig
ImportError: cannot import name 'dist'") 和 "sudo apt-get install python3-distutils" 解决了它。谢谢!

@RandyRomero @wakiyamap谢谢, apt install python3-distutils也适用于我。

@jonbesga我在 16.04.4 LTS 上并且它有效。 编辑 - 我正在使用 vagrant,刚才做了“vagrant box update”,我在 20180504)

一般来说,如果你问我,这不是与 pip 相关的问题,它更多地与 Ubuntu 打包有关

@wakiyamap谢谢,您的解决方案apt install python3-distutils也对我有用。
我刚刚在 Ubuntu 16.04.4 上升级到 Python 3.6.5,matplotlib 的导入和对 pip 的调用都因相同的错误而失败。

此修复程序需要广泛传播。

该线程已被自动锁定,因为它关闭后没有任何最近的活动。 请针对相关错误打开一个新问题。

此页面是否有帮助?
0 / 5 - 0 等级