当前位置: 首页 > 知识库问答 >
问题:

如何修复在使用Python3.8安装新软件包时“模块‘平台’没有属性‘linux_distribution’”?

燕鸿文
2023-03-14

我有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中安装新的软件包?

共有3个答案

祁曦哲
2023-03-14

问题是那个包裹。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的值,以确定是从软件包还是发行版获取linux发行版类型,例如:

if using_distro:
    linux_distro = distro.like()
else:
    linux_distro = platform.linux_distribution()[0]
段干瑞
2023-03-14

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

对我来说有用的是:
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/

邓焱
2023-03-14

至少在我的Ubuntu 16.04上,pip在<code>/usr/lib/python3/dist packages/pip<code>中为所有Python版本共享。

这就是我所做的让它再次工作:

    < li> sudo删除python3-pip < Li > < code > sudo python 3.8-m easy _ install pip

您可能希望使用 sudo python3.5 -m easy_install pip 再次安装 python 3.5 版本的 pip

 类似资料:
  • 问题内容: http://xgboost.readthedocs.org/en/latest/python/python_intro.html 在xgboost(上面的链接)的主页上显示:要安装XGBoost,请执行以下步骤: 您需要在项目的根目录中运行 在python-package目录中运行 python setup.py安装 但是,当我这样做时,对于第1步,将出现以下错误:make:术语“

  • 我试图让我的LexBot与Lambda通信,所以我遵循了创建请求、签名和所需的一切的过程。但是我不确定是否需要从Python导入某些东西。当我要发布消息时,它失败了。签名和身份验证标头一起创建。 请告知伙计们,任何帮助将不胜感激! 我将这些文章用作指导方针:https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-exam

  • 问题内容: 我已经使用Go模块安装了一个软件包(在Go 1.13中获取),现在我想将其删除。在文档中没有关于此的任何内容,在go中也没有。 手动从go.mod中删除软件包无法解决问题,因此仍保留在go.sum中。 我应该如何清洁包装? 问题答案: 找到了它https://blog.golang.org/using-go- modules#TOC_7。 因此,基本上,一旦未将软件包导入任何软件包中,

  • 问题内容: 我有一个包含许多文件的目录。每个文件定义一些类。我的目录中也有一个空白。 例如: 我正在尝试导入和访问所有这些文件中定义的类: 这给我一个错误的说法,即没有属性。为什么?为什么我只能访问其中一个文件(),而不能访问其他文件? 问题答案: 问题是子模块不会自动导入。您必须显式导入模块: 如果您真的坚持要在导入时可用,则可以输入以下内容: 然后,这将按预期工作:

  • 问题内容: 我想将包从github安装到我的gopath,我已经尝试过了: 仓库在这里。 问题答案: 命令去 下载并安装软件包和依赖项 用法: [packages] Get下载由导入路径命名的包及其依赖项。然后,它将安装命名的软件包,例如“ go install”。 -d标志指示下载软件包后停止。也就是说,它指示不要安装软件包。 -f标志仅在设置-u后才有效,它强制-u不验证每个软件包是否已从其导

  • 我试图写一个简单的Ansible剧本,请看下面的片段。使用Ansible 2.4.0.0、Ubuntu 17.04、Python 2.7.13。这是我第一次使用Ansible和Playbooks,所以请不要太苛刻。我做错了什么? playbook.yml 编辑:如果我通过SSH连接到同一台机器,我可以手动更新apt-cache并使用相同的用户(使用sudo)安装包。如果我在Playbook中运行命