【问题标题】:Linux Mint Cinnamon error opening settings (No module named 'PIL')Linux Mint Cinnamon 错误打开设置(没有名为“PIL”的模块)
【发布时间】:2021-10-20 12:24:10
【问题描述】:

自从我将 Cinnamon 更新到 5.0.6 后,我无法访问“首选项”下的任何条目,因此没有任何反应。当我尝试从 CLI 打开时,我有以下内容:

#> cinnamon-settings
No module named 'PIL'

我搜索了很多,但没有适合我的问题。我知道这是 Python 和 PIL 模块或较新的模块 Pillow 的问题,但提供的解决方案都不适合我。

一些信息:


#> python --version
Python 3.8.10

#> /usr/bin/env python
Python 3.8.10 (default, Sep 28 2021, 16:10:42) 

#> pip -V
pip 21.3 from /usr/local/lib/python3.8/dist-packages/pip (python 3.8)

#> pip show Pillow
Name: Pillow
Version: 8.4.0
Summary: Python Imaging Library (Fork)
Home-page: https://python-pillow.org
Author: Alex Clark (PIL Fork Author)
Author-email: aclark@python-pillow.org
License: HPND
Location: /home/xxx/.local/lib/python3.8/site-packages
Requires: 
Required-by: image, imageio, img2pdf, matplotlib, ocrmypdf, pikepdf, reportlab, scikit-image


你有什么想法吗?

谢谢

编辑:我在 Cinnamon 5.0.6 更新日志上找到了这个,我认为这是问题所在

  • cinnamon-settings:从 python 的模块搜索路径中删除 ~/.local 和 /usr/local

【问题讨论】:

    标签: python python-imaging-library linux-mint cinnamon


    【解决方案1】:

    在文件 /usr/share/cinnamon/cinnamon-settings/bin/util.py 我注释了第 9 行和第 10 行:

     if path.startswith(("/usr/local", os.path.expanduser("~/.local"))):
     continue
    

    # if path.startswith(("/usr/local", os.path.expanduser("~/.local"))):
    #    continue
    

    【讨论】:

    • 您能否简要解释一下为什么这会对 OP 有所帮助?
    • 这个问题我没有明确的答案,我认为函数本身不能正常工作sys.path.startswith。或者链接不正确。
    【解决方案2】:

    我找到了一个解决方法,恢复 5.0.6 中所做的更改

    在文件 /usr/share/cinnamon/cinnamon-settings/util.py 我注释了第 9 行和第 10 行:

    #!/usr/bin/python3
    
    def strip_syspath_locals():
        import sys
        import os
    
        new_path = []
        for path in sys.path:
            if path.startswith(("/usr/local", os.path.expanduser("~/.local"))):
                continue
            new_path.append(path)
    
        sys.path = new_path
    

    #!/usr/bin/python3
    
    def strip_syspath_locals():
        import sys
        import os
    
        new_path = []
        for path in sys.path:
            # if path.startswith(("/usr/local", os.path.expanduser("~/.local"))):
            #    continue
            new_path.append(path)
    
        sys.path = new_path
    

    这可能不是解决此问题的最佳方法,但它确实有效。

    您看到更好的解决方案还是 Cinnamon 中的错误?

    【讨论】:

    • 似乎下一篇文章有​​我安装 Linux Mint 20.2、Cinnamon 5.0.7 的正确路径:/usr/share/cinnamon/cinnamon-settings/bin/util.py
    猜你喜欢
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2012-02-10
    • 1970-01-01
    相关资源
    最近更新 更多