【问题标题】:AttributeError: 'NoneType' object has no attribute 'loader'AttributeError: 'NoneType' 对象没有属性 'loader'
【发布时间】:2019-07-08 13:12:21
【问题描述】:

今天我启动笔记本电脑 (Ubuntu 18.4) 并尝试使用 pip 安装软件包时遇到问题,我遇到了这个错误:

Error processing line 3 of /home/cjones/.local/lib/python3.6/site-packages/googleapis_common_protos-1.5.8-py3.6-nspkg.pth:

  Traceback (most recent call last):
    File "/usr/lib/python3.6/site.py", line 174, in addpackage
      exec(line)
    File "<string>", line 1, in <module>
    File "<frozen importlib._bootstrap>", line 568, in module_from_spec
  AttributeError: 'NoneType' object has no attribute 'loader'

Remainder of file ignored

自上次成功启动以来,我认为我没有更改任何内容,但似乎缺少某些内容...有人可以帮忙吗?

【问题讨论】:

    标签: python ubuntu pip


    【解决方案1】:

    删除/home/cjones/.local/lib/python3.6/site-packages/googleapis_common_protos-1.5.8-py3.6-nspkg.pth 并重试。

    【讨论】:

    • 能否解释一下这是如何工作的?我有这个错误,是由于一个旧包被移动/重新命名,但 .pth 文件仍然指向原始位置
    • 我相信他们的意思如果你有一个错误 Error processing line 3 of file_name 只是摆脱 file_name 导致错误。
    【解决方案2】:

    我遇到了类似的问题,但错误消息引用了不同的 .pth 文件。我收到的错误信息是:

    Error processing line 1 of /Users/jt/anaconda3/lib/python3.7/site-packages/sphinxcontrib.datatemplates-nspkg.pth:
    
      Traceback (most recent call last):
        File "/Users/jt/anaconda3/lib/python3.7/site.py", line 168, in addpackage
          exec(line)
        File "<string>", line 1, in <module>
        File "<frozen importlib._bootstrap>", line 580, in module_from_spec
      AttributeError: 'NoneType' object has no attribute 'loader'
    
    Remainder of file ignored
    

    按照此处描述的解决方案:

    https://github.com/Pyomo/pyomo/issues/95

    我编辑了 .pth 文件(错误消息开头的文件,紧跟在文本 Error processing line 1 of 之后)并在第一个分号后添加了一个换行符。也就是我变了:

    import sys, types, os;has_mfs = sys.version_info > (3, 5);p ...<rest of file>
    

    收件人:

    import sys, types, os;
    has_mfs = sys.version_info > (3, 5);p ...<rest of file>
    

    我不知道为什么会这样,但确实有效。

    【讨论】:

      【解决方案3】:

      我在 Mac 上的虚拟环境中遇到了类似的错误,但指的是 matplotlib:

      错误处理//anaconda3/lib/python3.7/site-packages/matplotlib-3.1.3-py3.7-nspkg.pth的第1行:

      和上一个答案一样,通过更改提到的文件来解决:

      import sys, types, os;has_mfs = sys.version_info > (3, 5);p = os.path.join(sys._getframe(1).$
      

      为此,通过换行符:

      import sys, types, os;
      has_mfs = sys.version_info > (3, 5);p = os.path.join(sys._getframe(1).$
      

      【讨论】:

        【解决方案4】:

        我必须在 vi 中执行 :0,$s/;/;\r/g。

        看起来一行太长,pip3 无法处理。基本上,有些包将所有命令放在一行中,这会在某处溢出缓冲区。

        此 vi 命令在每个分号后放置一个回车符。 (换行符 (\n) 可能会代替回车符。)

        命令分解:

        : - use ED line editor command
        0,$ - run on all lines
        s - regular expression substitution
        / - delimiter start search
        ; - replace semicolon with
        / - delimiter end search start replace
        ;\r - replace with semicolon followed by carriage return
        / - delimiter end replace
        g - global - do more than once per line.
        

        这是一个非常常见的 vi 命令。如果需要替换“/”,可以使用另一个字符作为分隔符——“s”之后的第一个字符是分隔符

        【讨论】:

        • 能否请您在说明中更清楚一些?
        • 它看起来很糟糕,请详细说明
        【解决方案5】:

        该行太长,pip3 无法处理。 您可以重新安装 googleapis_common_protos 来解决此问题。 这意味着你可以运行这个:

        pip uninstall googleapis_common_protospip install googleapis_common_protos

        【讨论】:

          猜你喜欢
          • 2019-11-16
          • 2019-01-01
          • 2021-12-26
          • 2019-07-23
          • 2018-05-13
          • 2020-09-07
          • 2017-05-03
          • 2023-03-16
          • 2018-07-14
          相关资源
          最近更新 更多