2016-09-19 2 views
2

numbers.pynumpyBasicOps.py이라는 2 개의 파이썬 파일이 있습니다. numbers.py은 모듈을 가져 오지 않고 간단한 파이썬 파일입니다. numpyBasicOps.pynumpy 라이브러리를 가져옵니다. .pyc 파일을 가져 오지 않아도 생성됩니다.

I는 numpyBasicOps.py을 실행할 때마다

numbers.py의 출력은 제 numpy 모듈에 관한 약간의 오차 뒤에 표시된다 :

Traceback (most recent call last): 
    File "./numpyBasicOps.py", line 3, in <module> 
    import numpy as np 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/__init__.py", line 142, in <module> 
    from . import add_newdocs 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/add_newdocs.py", line 13, in <module> 
    from numpy.lib import add_newdoc 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/lib/__init__.py", line 8, in <module> 
    from .type_check import * 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/lib/type_check.py", line 11, in <module> 
    import numpy.core.numeric as _nx 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/core/__init__.py", line 22, in <module> 
    from . import _internal # for freeze programs 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/core/_internal.py", line 15, in <module> 
    from .numerictypes import object_ 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/core/numerictypes.py", line 962, in <module> 
    _register_types() 
    File "/Library/Python/2.7/site-packages/numpy-1.11.2rc1-py2.7-macosx-10.11-intel.egg/numpy/core/numerictypes.py", line 958, in _register_types 
    numbers.Integral.register(integer) 
AttributeError: 'module' object has no attribute 'Integral' 

도 I은 numbers.py위한 .pyc 파일이 생성되는 참조.

numpyBasicOps.py에 가져 오지 않았는데도 numbers.pyc 파일이 생성되고 왜 numbers.py의 출력이 표시됩니까?

답변

2

numpy은 추상 기본 클래스 numbers.Integral을 구현할 때 자신의 정수와 유사한 객체를 등록합니다. 이렇게하려면 해당 개체에 액세스하려면 import numbers을 사용해야합니다.

또는 적어도 시도했지만 실패했습니다. 모듈의 이름을 numbers으로 변경했을 때 대신 가져 왔습니다. 즉, 귀하의 numbers.py 모듈은 내장형 standard library module numbers을 마스킹합니다.

다른 이름으로 모듈의 이름을 바꾸고 작성한 numbers.pyc 파일을 삭제했는지 확인하십시오.

+0

@Martijn Pieters에 감사드립니다. 그것은 나를 위해 지금 일했습니다. 그러나 나는 의심의 여지가있다 : 내가 현재 가지고있는 numpy는 새로 설치된다. 이전에 numpy는 이미 Python에 존재했습니다. 별도로 설치할 필요가 없었습니다. 그러나 Tensorflow를 설치하기 위해이 numpy 버전이 문제를 발생시켜 삭제해야했습니다. tensorflow와 호환되는 numpy의 또 다른 버전을 설치했습니다. 그래서, 내 의심은 - 이전 버전의 numpy에서는 'numpyBasicOps.py'파일이 numpy 오류를주지 않고 제대로 작동하는 데 사용되었습니다. 그런데 왜 일찍 일 했나요? – AnujaP

+0

@AnujaP : 그다지 정보는 아니지만 이전 버전 인 numpy는 숫자를 가져 오지 않았을 것으로 추측됩니다. –

관련 문제