2017-11-15 1 views
9

내가 에 CentOS 리눅스 1611년 3월 7일 (코어) 운영체제가 설치된 컴퓨터에 파이썬 3.5.1 함께 일하고 있어요.pytorch, AttributeError : 모듈 '토치'는 어떤 속성이없는 '텐서'

나는 PyTorch을 사용하려고하는데 나는 this tutorial으로 시작하려고합니다.

불행하게도, 예를의 # 4 라인은 문제를 만듭니다

>>> torch.Tensor(5, 3) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: module 'torch' has no attribute 'Tensor' 

내가 '토치'속성 '텐서'를 가지고 토치에서 물론 ...이 오류를 이해할 수 없습니다. 동일한 명령이 토치에서 작동합니다.

이 문제를 어떻게 해결할 수 있습니까?

+0

'>>> 도움 (토치)'또는'>>> torch' 또는'>>> 디렉토리 (토치)'등 당신이 우리가 여기있어 –

+0

보다 자세한 내용은이 :'패키지 토치에 대한 도움말 : NAME 토치 패키지 내용물 FILE (내장) (END)' –

+0

'>>> 토치 <모듈 '토치'(네임 스페이스)>' –

답변

11

실행중인 Python 바이너리에 torch이 설치되어 있지 않습니다. 그것은 모듈 검색 경로에 torch라는 이름의 디렉토리를 가지고, 그리고는 namespace package로 처리됩니다

$ pwd 
/some/path 
$ python3 -c 'import torch; print(torch); print(torch.__path__)' 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
ModuleNotFoundError: No module named 'torch' 
$ mkdir torch 
$ python3 -c 'import torch; print(torch); print(torch.__path__)' 
<module 'torch' (namespace)> 
_NamespacePath(['/some/path/torch']) 

그 안에 __init__.py 파일이 존재하지 않고 모든 디렉토리, 모듈 검색 경로에 위치, 처리됩니다 네임 스페이스로 제공된 경우 다른 이름의 파이썬 모듈이나 패키지는 검색 경로의 어느 곳에서도 찾을 수 없습니다.

$ ls -ld torch/ 
drwxr-xr-x 2 mjpieters users 68 Nov 23 13:57 torch/ 
$ mkdir -p additional_path/torch/ 
$ touch additional_path/torch/__init__.py 
$ PYTHONPATH="./additional_path" python3 -c 'import os.path as p, sys; print(*(t for t in (p.join(e, "torch") for e in sys.path) if p.exists(t)), sep="\n")' 
torch 
/some/path/additional_path/torch 
$ PYTHONPATH="./additional_path" python3 -c 'import torch; print(torch); print(torch.__path__)' 
<module 'torch' from '/some/path/additional_path/torch/__init__.py'> 
['/some/path/additional_path/torch'] 

(가) 위 sys.path 나열 torch 디렉토리가 먼저 additional_path/torch 다음에 있음을 보여줍니다

torch는 파이썬 바이너리를 위해 설치 한 경우 로컬 torch 디렉토리가 있다면, 그것은 문제가되지 않는다는 것을 의미합니다 , 후자는 가져 오기를 시도 할 때 torch 모듈로로드됩니다. 이는 네임 스페이스 패키지를로드하기 전에 파이썬이 최상위 모듈과 패키지에 우선 순위를 부여하기 때문입니다.

현재 파이썬 바이너리에 대해 토치를 올바르게 설치해야합니다 (project homepage 참조). pip를 사용하는 경우 대신 -m 스위치를 사용하여 파이썬 바이너리를 사용할 수 있습니다 :

python3.5 -m pip install http://download.pytorch.org/whl/cu80/torch-0.2.0.post3-cp35-cp35m-manylinux1_x86_64.whl 
python3.5 -m pip install torchvision 

그래서 홈페이지 지침 python3.5 -m pip와 함께 사용하는 pip3 교체; python3.5은 파이썬 바이너리의 전체 경로가 될 수도 있습니다.

최신 버전으로 올바른 download.pytorch.org URL을 사용하십시오.

디렉토리를 따로 이동할 필요는 없지만 위치를 알기를 원하지 않는 경우 위에 표시된 것처럼 print(torch.__path__)을 사용하십시오.

는 다시, 당신이 로컬 torch 디렉토리에 __init__.py 파일이 할 경우, 그것은 일반 패키지가되고는 정상 site-packages 위치에 pip 설치 패키지를 마스크 것 있습니다. 이러한 패키지 또는 로컬 torch.py 단일 파일 모듈이있는 경우 이름을 바꿔야합니다.이 경우 진단 정보가 다르게 보입니다.

$ pwd 
/some/path 
$ python3 -c 'import torch; print(torch); print(torch.__path__)' 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
ModuleNotFoundError: No module named 'torch' 
$ mkdir torch 
$ touch torch/__init__.py # make it a package 
$ python3 -c 'import torch; print(torch); print(torch.__path__)' 
<module 'torch' from '/some/path/torch/__init__.py'> 
['/some/path/torch'] 
$ rm -rf torch/ 
$ touch torch.py   # make it a module 
$ python3 -c 'import torch; print(torch); print(torch.__file__)' 
<module 'torch' from '/some/path/torch.py'> 
/some/path/torch.py 

차이점을 유의하십시오. 위의 네임 스페이스 패키지는 <module 'name' (namespace)>을 사용하고 일반 패키지는 ), while a plain module uses`을 사용합니다.

이러한 패키지 및 모듈 (이름 공간 패키지 아님)이 먼저 발견되고 검색이 중지됩니다. 발견 된 패키지 또는 모듈이 원하는 패키지 또는 모듈이 아닌 경우, 옆으로 옮기거나 이름을 바꿔야합니다.

+0

와 간섭 수 있습니다. 고마워,하지만 작동하지 않습니다. 나는 네 모든 걸 밟았지만 아무것도 바뀌지 않았다. 추가 아이디어? –

+0

@DavideChicco 당신은 당신의 결과물로 pastie 나 요점을 만들 수 있습니다. 그래서 우리는 무엇이 잘못 될지 진단 할 수 있습니까? 'python3.5 -m pip freeze'는 토치를 전혀 표시하지 않습니까? –

+0

여기 'python3.5 -m -pip freeze'의 출력이다 : numexpr의 == 2.6.1 NumPy와 == 1.11.1 olefile == 0.44 팬더 동결'python3.5 -m PIP == 0.18.1 베개 == 4.3.0 파이썬 dateutil == 2.5.3 pytz의 == 2016년 6월 1일 PyYAML == 3.12 scikit 배우기 == 0.17.1 scipy == 0.17.1 여섯 == 1.10. 0 tables == 3.2.3.1 토치 == 0.2.0.post3 torchvision == 0.1.9' –

0

노트북이 python2으로 실행되는 것처럼 보입니다.


가 FIX
1. ipython의 python3.5 커널을 확인합니다 (텍스트 편집기에서 개방)을 notebook filemetadata 섹션

"metadata": { 
    "kernelspec": { 
    "display_name": "Python 2", 
    "language": "python", 
    "name": "python2" 
    }, 
    "language_info": { 
    "codemirror_mode": { 
    "name": "ipython", 
    "version": 2 
    }, 
    "file_extension": ".py", 
    "mimetype": "text/x-python", 
    "name": "python", 
    "nbconvert_exporter": "python", 
    "pygments_lexer": "ipython2", 
    "version": "2.7.13" 
    } 
} 
를 참조/jupyter가 설치됩니다
python3.5 -m ipykernel install --name python3.5.1

2. jupyter notebook을 실행하고 노트북의 커널 버전을 변경하십시오 :
enter image description here



또는 hackily 직접 (권장하지 않음) <notebook.ipynb> 편집 : 실행중인

"metadata": { 
    "kernelspec": { 
    "display_name": "Python 3.5.1", 
    "language": "python", 
    "name": "python3.5.1" 
    }, 
    "language_info": { 
    "codemirror_mode": { 
    "name": "ipython", 
    "version": 3 
    }, 
    "file_extension": ".py", 
    "mimetype": "text/x-python", 
    "name": "python", 
    "nbconvert_exporter": "python", 
    "pygments_lexer": "ipython3", 
    "version": "3.5.1" 
    } 
} 
0

파이썬 바이너리 torch이 설치되어 있지 않습니다. 그것은 모듈 검색 경로에 torch라는 이름의 디렉토리를 가지고, 그리고는 namespace package로 처리됩니다

$ pwd 
/some/path 
$ python3 -c 'import torch; print(torch); print(torch.__path__)' 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
ModuleNotFoundError: No module named 'torch' 
$ mkdir torch 
$ python3 -c 'import torch; print(torch); print(torch.__path__)' 
<module 'torch' (namespace)> 
_NamespacePath(['/some/path/torch']) 

그 안에 __init__.py 파일이 존재하지 않고 모든 디렉토리, 모듈 검색 경로에 위치, 처리됩니다 네임 스페이스로 제공된 경우 다른 이름의 파이썬 모듈이나 패키지는 검색 경로의 어느 곳에서도 찾을 수 없습니다.

$ ls -ld torch/ 
drwxr-xr-x 2 mjpieters users 68 Nov 23 13:57 torch/ 
$ mkdir -p additional_path/torch/ 
$ touch additional_path/torch/__init__.py 
$ PYTHONPATH="./additional_path" python3 -c 'import os.path as p, sys; print(*(t for t in (p.join(e, "torch") for e in sys.path) if p.exists(t)), sep="\n")' 
torch 
/some/path/additional_path/torch 
$ PYTHONPATH="./additional_path" python3 -c 'import torch; print(torch); print(torch.__path__)' 
<module 'torch' from '/some/path/additional_path/torch/__init__.py'> 
['/some/path/additional_path/torch'] 

(가) 위 sys.path 나열 torch 디렉토리가 먼저 additional_path/torch 다음에 있음을 보여줍니다

torch는 파이썬 바이너리를 위해 설치 한 경우 로컬 torch 디렉토리가 있다면, 그것은 문제가되지 않는다는 것을 의미합니다 , 후자는 가져 오기를 시도 할 때 torch 모듈로로드됩니다. 왜냐하면 파이썬은 네임 스페이스 패키지를로드하기 전에 최상위 모듈과 패키지에 우선 순위를 부여하기 때문입니다.

현재 파이썬 바이너리에 대해 토치를 올바르게 설치해야합니다 (project homepage 참조). pip를 사용하는 경우 대신 -m 스위치를 사용하여 파이썬 바이너리를 사용할 수 있습니다 :

python3.5 -m pip install http://download.pytorch.org/whl/cu80/torch-0.2.0.post3-cp35-cp35m-manylinux1_x86_64.whl 
python3.5 -m pip install torchvision 

그래서 홈페이지 지침 python3.5 -m pip와 함께 사용하는 pip3 교체; python3.5은 파이썬 바이너리의 전체 경로가 될 수도 있습니다.

최신 버전으로 올바른 download.pytorch.org URL을 사용하십시오.

디렉토리를 따로 이동할 필요는 없지만 위치를 알기를 원하지 않는 경우 위에 표시된 것처럼 print(torch.__path__)을 사용하십시오.

관련 문제