39

我有 2.7 和 3.5 的 Python 版本。我想安装更新版本的 Python,即 python 3.8。我使用的是 Ubuntu 16.04,由于依赖关系,我不能只卸载 Python 3.5。所以为了运行我的脚本,我使用python3.8 app.py. 到目前为止没有问题。但是当我想通过 pip 安装新包时:

python3.8 -m pip install pylint

它抛出一个错误:

AttributeError: module 'platform' has no attribute 'linux_distribution'

到目前为止,我尝试过:

sudo update-alternatives --config python3

并选择 python3.8 并从 python3 开始运行命令,但没有运气。

然后:

sudo ln -sf /usr/bin/python3.5 /usr/bin/python3

我也尝试从 python3 开始运行命令,但它也不起作用。

如何修复它以便可以将新软件包安装到新版本的 Python 中?

4

6 回答 6

56

It looks like at least on my Ubuntu 16.04, pip is shared for all Python versions in /usr/lib/python3/dist-packages/pip.

This is what I did to get it working again:

  • sudo apt remove python3-pip
  • sudo python3.8 -m easy_install pip

You might want to install the python 3.5 version of pip again with sudo python3.5 -m easy_install pip.

于 2020-02-03T20:39:07.093 回答
32

Python 3.8 删除了一些东西。我通过安装 pip 解决了我的 pip 问题(特别是 pip install)curl

对我有用的是:
cd ~/Downloads
下载get-pip.py
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
然后用 python 3.8 运行它:
python3.8 get-pip.py

为我解决了。

来源:https ://pip.pypa.io/en/stable/installing/

于 2020-01-27T18:30:04.693 回答
11

问题是 package.linux_distribution 从 Python 3.5(?) 开始就被弃用了。并在 Python 3.8 中完全删除。

请改用发行包。但是,此软件包仅适用于 Linux。

我在 Linux Mint 20 上安装 OpenCobolIDE 后遇到了这个问题,并将 Python 升级到了最新级别。已将代码修复提交给 OpenCobolIDE 作者进行审查和测试。我能够通过此修复程序启动和运行 IDE。

本质上,该修复程序使用发行包(如果可用),否则它使用旧平台包。例如:

如果可用,此代码将导入发行版:

import platform
using_distro = False
try:
    import distro
    using_distro = True
except ImportError:
    pass

然后可以通过测试using_distro的值来判断是从 package 还是 distro 中获取 linux distro 类型,例如:

if using_distro:
    linux_distro = distro.like()
else:
    linux_distro = platform.linux_distribution()[0]
于 2020-09-28T17:06:07.957 回答
1

检查您的车轮安装是否旧。我遇到了同样的错误并修复了它

python3.8 -m pip install --upgrade pip setuptools wheel

Pylint 似乎适用于 python3.8

于 2019-12-09T21:07:11.560 回答
1

就我而言,删除python-pip-whl包有助于:

apt-get remove python-pip-whl

它也删除了pipand virtualenv,所以我不得不再次安装它们:

curl https://bootstrap.pypa.io/get-pip.py | python3
pip install virtualenv
于 2020-09-30T06:27:26.157 回答
0

我最近遇到了这个错误,事实证明我platform在标准库之前的路径上的一个文件夹中调用了一个包,因此解释器导入了它。检查您实际导入的路径。

于 2021-06-09T10:19:16.737 回答