ubuntu20.04 从python3.8降到python3.6出现区域和语言(region & language)不能打开的情况

本文讲述了在Ubuntu 20.04系统中安装Python 3.8后遇到的语言切换问题,通过排查系统日志发现缺少_gi模块,通过修改shell脚本指定python3.8路径解决了此问题。

问题描述

提示:这里描述具体问题:在ubuntu20.04安装了python3.8之后就不能用中英文切换了。
点击manage install language,没有反映。
在这里插入图片描述
点击商店中的中英切换图标也没有反映。
在这里插入图片描述
查了好久资料才反应过来,没有提示,没有反应,不知道错误在哪里。后来反应过来了,在ubuntu的系统里面所有的过程都会被记录下来,所以就想到去系统log里面找错误,果然在/var/log/syslog里面发现了问题,提示没有_gi模块,这让我想到了之前在修改python版本时遇到的一个问题就是不能打开terminal,详见:http://t.csdn.cn/U4xrC
在这里插入图片描述
根据之前的经验找到了问题。

原因分析:

提示:这里填写问题的分析:原因是python在启动之前会先启动shell脚本,在shell脚本中提示时python3,当前的python3指向python3.6,python3.6不能直接应用,所以提示不能找到_gi模块。


解决方案:

提示:这里填写该问题的具体解决方案:和之前一样找到python提示错误的文件,修改为python3.8即可解决。

提示是这句话,打开文件。

File "/usr/bin/gnome-language-selector", line 5, in <module>
sudo vim /usr/bin/gnome-language-selector

#! /usr/bin/python3

import gettext

from LanguageSelector.gtk.GtkLanguageSelector import GtkLanguageSelector
from gettext import gettext as _
from optparse import OptionParser
from gi.repository import Gtk, Gio
import sys

is_running = False

def on_activate (app, options):
    global is_running
    if is_running:
        for window in app.get_windows():
            if not window.is_active():
                window.present()
        return
    is_running = True
    instance = GtkLanguageSelector(datadir=options.datadir,
                                   options=options)
    app.add_window(instance.window_main)

if __name__ == "__main__":
    gettext.bindtextdomain("language-selector", "/usr/share/locale")
    gettext.textdomain("language-selector")

    parser = OptionParser()
    parser.add_option("-n", "--no-verify-installed-lang-support",
                      action="store_false", dest="verify_installed",
                      default=True,
                      help=_("don't verify installed language support"))
    parser.add_option("-d", "--datadir",
                      default="/usr/share/language-selector/",
                      help=_("alternative datadir"))
    (options, args) = parser.parse_args()

    app = Gtk.Application(application_id="com.ubuntu.GnomeLanguageSelector",
                          flags=Gio.ApplicationFlags.FLAGS_NONE)
    app.connect("activate", on_activate, options)
    app.run(None)

修改为

#! /usr/bin/python3.8

import gettext

from LanguageSelector.gtk.GtkLanguageSelector import GtkLanguageSelector
from gettext import gettext as _
from optparse import OptionParser
from gi.repository import Gtk, Gio
import sys

is_running = False

def on_activate (app, options):
    global is_running
    if is_running:
        for window in app.get_windows():
            if not window.is_active():
                window.present()
        return
    is_running = True
    instance = GtkLanguageSelector(datadir=options.datadir,
                                   options=options)
    app.add_window(instance.window_main)

if __name__ == "__main__":
    gettext.bindtextdomain("language-selector", "/usr/share/locale")
    gettext.textdomain("language-selector")

    parser = OptionParser()
    parser.add_option("-n", "--no-verify-installed-lang-support",
                      action="store_false", dest="verify_installed",
                      default=True,
                      help=_("don't verify installed language support"))
    parser.add_option("-d", "--datadir",
                      default="/usr/share/language-selector/",
                      help=_("alternative datadir"))
    (options, args) = parser.parse_args()

    app = Gtk.Application(application_id="com.ubuntu.GnomeLanguageSelector",
                          flags=Gio.ApplicationFlags.FLAGS_NONE)
    app.connect("activate", on_activate, options)
    app.run(None)

欢迎评论:

提示:欢迎大家在评论区讨论相关问题。
可以关注博主,我会持续更新工作中遇到的技术小砖头,供大家使用。
也可以在评论区告知好的小砖头或技术,我会收录。
还可以指出本博文错误,希望大家不吝赐教。

&lt;think&gt;好的,用户的问题是如何在Ubuntu 20.04安装Python 3.8。首先,我需要确认Ubuntu 20.04默认的Python版本是什么。根据引用[2]引用[3],Ubuntu 20.04默认使用的是Python 3.8,所以用户可能已经安装了该版本,但可能想确认或重新安装。 不过,用户的问题看起来是要安装Python 3.8,可能他们误以为系统没有预装,或者需要特定的安装方式。首先,我应该检查默认安装情况。通常,Ubuntu 20.04确实预装了Python 3.8,但可能用户需要安装额外的开发包或者pip工具。 如果用户需要手动安装Python 3.8,可能是因为某些原因系统自带的版本被删除或需要重新编译安装。这时候需要考虑添加deadsnakes PPA,或者从源代码编译。但根据引用[1]中的方法,用户可能更倾向于使用PPA来安装较新版本,但这里需要的是安装Python 3.8,而Ubuntu 20.04已经包含它,所以可能需要指导用户如何确保安装安装相关工具。 另外,用户可能需要安装pip,引用[2]引用[3]提到了如何在Ubuntu 20.04安装pip,这可能也是用户需要的部分。但问题明确是关于Python 3.8安装,所以重点应该放在确认Python 3.8的存在以及如何安装必要的包。 可能的步骤包括: 1. 检查Python 3.8是否已安装。 2. 如果没有安装,添加PPA或使用apt安装3. 安装Python 3.8的venv开发包。 4. 安装pip3。 5. 验证安装。 需要确保所有命令正确无误,并且引用相关的参考资料。例如,添加PPA可能需要使用deadsnakes,但根据用户提供的引用中没有提到这个,可能需要参考其他资料,但用户提供的引用可能不足以覆盖,所以需要依赖已有的引用。不过用户提供的引用[1]是关于升级到3.10,引用[2][3]是关于安装pip,所以可能需要结合这些信息。 另外,注意用户可能存在的误区,即Ubuntu 20.04默认已经带有Python 3.8,所以需要提示用户检查是否已安装,避免不必要的操作。&lt;/think&gt;在Ubuntu 20.04系统中,Python 3.8是默认预装的开发环境[^2][^3]。若需验证或重新安装,可按照以下步骤操作: ### 第一步:验证Python 3.8是否存在 ```bash python3 --version # 若输出为&quot;Python 3.8.x&quot;则已预装 ``` ### 第二步:安装Python 3.8开发包 若需完整开发支持(含头文件、静态库等): ```bash sudo apt update sudo apt install python3.8-dev # 安装开发依赖项[^3] ``` ### 第三步:配置多版本兼容(可选) 若系统存在其他Python版本,可通过`update-alternatives`设置优先级: ```bash sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 ``` ### 第四步:安装pip包管理工具 ```bash sudo apt install python3-pip # 为Python 3.8安装pip pip3 --version # 验证工具链 ``` ### 第五步:创建虚拟环境(推荐) ```bash python3 -m venv myenv # 生成隔离的Python 3.8环境 source myenv/bin/activate ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小白到专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值