2016-09-19 2 views
2

У меня есть 2 файла Python, называемые numbers.py и numpyBasicOps.py. numbers.py - это простой файл Python, не импортирующий какой-либо модуль. numpyBasicOps.py импортирует библиотеку numpy..pyc файл создается, когда он еще не импортирован

Всякий раз, когда я бегу numpyBasicOps.py, numbers.py «s выход отображается первым следуют некоторые ошибки, касающиеся 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' 

Кроме того, я вижу .pyc файл для numbers.py генерируется.

Как файл numbers.pyc получить сгенерированный, даже если он не импортирован в numpyBasicOps.py и почему выводится на 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 давала проблемы, поэтому мне пришлось ее удалить. Я установил другую версию numpy, совместимую с tensorflow. Итак, я сомневаюсь - с более ранней версией numpy файл 'numpyBasicOps.py' работал нормально, без какой-либо ошибки. Так почему он работал раньше? – AnujaP

+0

@AnujaP: Это не так много информации, но при догадке, которая звучит, как более старая версия 'numpy', не импортировала' numbers'. –

Смежные вопросы