AttributeError: 'NoneType' 对象没有属性 'loader'
Posted
技术标签:
【中文标题】AttributeError: \'NoneType\' 对象没有属性 \'loader\'【英文标题】: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
自上次成功启动以来,我认为我没有更改任何内容,但似乎缺少某些内容...有人可以帮忙吗?
【问题讨论】:
【参考方案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_protos
和pip install googleapis_common_protos
【讨论】:
以上是关于AttributeError: 'NoneType' 对象没有属性 'loader'的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:'NoneType'对象没有属性'upper'[关闭]
%Matplotlib - AttributeError: 'NoneType' 对象没有属性 'lower'
BeautifulSoup:AttributeError:“NoneType”对象没有属性“文本”
Elastic Beanstalk 部署错误:AttributeError :: 'NoneType' 对象没有属性 'split'