2013-12-12 6 views
5

Я думаю, что у меня возникают проблемы с импортом pylab. Аналогичная ошибка возникает при импорте numpy. Вот мой кодAttributeError: объект 'module' не имеет атрибута 'lowercase'

from math import radians, sin, cos 
from pylab import plot, xlabel, ylabel, title, show 

v0=input("Enter v0 (m/s)...") 
alpha0=input("enter alpha0 (degrees)...") 
g=input("Enter g (m/s^2)..") 

radalpha0=radians(alpha0) 
t_inc=0.01 
t=0 
i=0 
x=[] 
y=[] 

x.append(v0*cos(radalpha0)*t) 
y.append(v0*sin(radalpha0)*t-0.5*g*t*t) 

while y[i]>=0: 
    i=i+1 
    t=t+t_inc 
    x.append(v0*cos(radalpha0)*t) 
    y.append(v0*sin(radalpha0)*t-0.5*g*t*t) 

xlabel('x') 
ylabel('x') 
plot(x,y) 
title('Motion in two dimensions') 
show() 

я получаю этот выход

Traceback (most recent call last): 
    File "2d_motion.py", line 2, in <module> 
    from pylab import plot, xlabel, ylabel, title, show 
    File "/usr/lib64/python2.7/site-packages/pylab.py", line 1, in <module> 
    from matplotlib.pylab import * 
    File "/usr/lib64/python2.7/site-packages/matplotlib/__init__.py", line 151, in <module> 
    from matplotlib.rcsetup import (defaultParams, 
    File "/usr/lib64/python2.7/site-packages/matplotlib/rcsetup.py", line 19, in <module> 
    from matplotlib.fontconfig_pattern import parse_fontconfig_pattern 
    File "/usr/lib64/python2.7/site-packages/matplotlib/fontconfig_pattern.py", line 28, in <module> 
    from pyparsing import Literal, ZeroOrMore, \ 
    File "/usr/lib/python2.7/site-packages/pyparsing.py", line 109, in <module> 
    alphas = string.lowercase + string.uppercase 
AttributeError: 'module' object has no attribute 'lowercase' 

Есть ли какие-либо проблемы с синтаксисом?

Я использую python2.7 на fedora18.

+0

Кстати я с таким же выводом, когда я пишу из pylab импорта * в питоне консоли – orknaydn

+0

Что вы получите, если вы наберете 'импорт string', а затем' печать строка .__ file__' на консоли? – DSM

+0

Я получаю линию; string.pyc – orknaydn

ответ

6

После некоторого обсуждения в комментариях выяснилось (как обычно, когда встроенные модули внезапно дают AttributeErrors), проблема заключалась в том, что другой модуль с именем string скрывал встроенный.

Один из способов проверить это посмотреть на атрибут модуля __file__, или просто посмотреть на сам repr:

>>> print string 
<module 'string' from '/usr/lib/python2.7/string.pyc'> 

если from не указывает на правильное место, вы, прочитал неверный модуль.

Решение: удалить/переименовать оскорбительные string.py/string.pyc файлов.

+0

У меня такая же проблема, и ваш ответ помог мне. Однако, я нахожу это немного неудовлетворительным. Не разрешено давать общие имена, такие как 'string' для любых * sub * модулей, кажется довольно сильным и неудобным ограничением. – flonk

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