python中torch可以成功引用但无法访问属性的解决办法
运行程序时遇到了一个奇怪的报错:
# ... 省略 ... AttributeError: module 'torch' has no attribute 'Tensor'
意思是模块torch没有Tensor属性。这是比较奇怪的一件事,因为torch肯定是可以访问Tensor。
后来在stackoverflow上找到了一个类似的错误,底下有人回复说这是因为python在执行import torch时引入的并不是torch包,而是一个命名空间(对应一个名为torch的文件夹)。
验证
首先查看一下是不是torch的引用真的有问题:
$ python >>> import torch >>> torch.Tensor Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'torch' has no attribute 'Tensor' >>> torch.nn Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'torch' has no attribute 'nn'
引入torch没有问题,但是不仅不能访问Tensor,连nn也不能访问。这说明我们的确引入了一个错误的torch。
>>> print(torch) <module 'torch' (namespace)> >>> print(torch.__path__) _NamespacePath(['.../python3.8/site-packages/torch'])
果然,这个torch不是我们期望的torch,而是一个命名空间,而且我们也可以定位到问题所在的路径。
解决
沿着路径找下去,的确有一个名为torch的目录,其中包含很多东西,应该是正常torch所需要的那些。但是其中没有__init.py__,不知道是什么原因导致的。
位于模块搜索路径上的任何不存在 __init__.py 文件的目录都将被视为命名空间。
(在搜索路径的其他任何位置都没有同名模块或包)
所以,在torch目录下创建一个__init__.py是不是就好啦?
我没有选择这样做,因为我不确定torch目录下的其他文件是不是完好的。我选择删除掉这个 torch目录,然后pip重新安装torch。最后问题成功解决。
当然,也有可能你本身是有正确的torch包,只不过有了额外的名为torch的目录导致这个问题。那你可以选择将目录改名来规避该问题。
结果
重新安装torch后,再测试一下。这回对了,python清楚地知道这是一个package,而不是一个namespace。
>>> import torch >>> print(torch) <module 'torch' from '.../lib/python3.8/site-packages/torch/__init__.py'> >>> print(torch.__path__) ['.../lib/python3.8/site-packages/torch']
到此这篇关于python中torch可以成功引用但无法访问属性的解决办法的文章就介绍到这了,更多相关python torch可以引用但无法访问内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
pytest使用@pytest.mark.parametrize()实现参数化的示例代码
这篇文章主要介绍了pytest使用@pytest.mark.parametrize()实现参数化,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-07-07
Python +Selenium解决图片验证码登录或注册问题(推荐)
这篇文章主要介绍了Python Selenium解决图片验证码登录或注册问题,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2020-02-02
python3新特性函数注释Function Annotations用法分析
这篇文章主要介绍了python3新特性函数注释Function Annotations用法,结合实例形式分析了Python3函数注释的定义方法与使用技巧,需要的朋友可以参考下2016-07-07
探索Python数据可视化库中Plotly Express的使用方法
在数据分析和可视化领域,数据的有效呈现是至关重要的,python作为一种强大的编程语言,提供了多种数据可视化工具和库,本文将介绍Plotly Express的基本概念和使用方法,帮助读者快速入门并掌握数据可视化的技巧2023-06-06


最新评论