python中torch可以成功引用但無法訪問屬性的解決辦法
運行程序時遇到了一個奇怪的報錯:
# ... 省略 ... AttributeError: module 'torch' has no attribute 'Tensor'
意思是模塊torch沒有Tensor屬性。這是比較奇怪的一件事,因為torch肯定是可以訪問Tensor。
后來在stackoverflow上找到了一個類似的錯誤,底下有人回復說這是因為python在執(zhí)行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目錄下創(chuàng)建一個__init__.py是不是就好啦?
我沒有選擇這樣做,因為我不確定torch目錄下的其他文件是不是完好的。我選擇刪除掉這個 torch目錄,然后pip重新安裝torch。最后問題成功解決。
當然,也有可能你本身是有正確的torch包,只不過有了額外的名為torch的目錄導致這個問題。那你可以選擇將目錄改名來規(guī)避該問題。
結果
重新安裝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可以引用但無法訪問內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
pytest使用@pytest.mark.parametrize()實現參數化的示例代碼
這篇文章主要介紹了pytest使用@pytest.mark.parametrize()實現參數化,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07Python +Selenium解決圖片驗證碼登錄或注冊問題(推薦)
這篇文章主要介紹了Python Selenium解決圖片驗證碼登錄或注冊問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02python3新特性函數注釋Function Annotations用法分析
這篇文章主要介紹了python3新特性函數注釋Function Annotations用法,結合實例形式分析了Python3函數注釋的定義方法與使用技巧,需要的朋友可以參考下2016-07-07探索Python數據可視化庫中Plotly Express的使用方法
在數據分析和可視化領域,數據的有效呈現是至關重要的,python作為一種強大的編程語言,提供了多種數據可視化工具和庫,本文將介紹Plotly Express的基本概念和使用方法,幫助讀者快速入門并掌握數據可視化的技巧2023-06-06