这太奇怪了。我在PyDev中运行这个程序
import ast
import sys
if __name__ == '__main__':
    print sys.version
    src = '''
print 3*4+5**2
'''
    print dir(ast)
    n = ast.parse(src)
    print n它的产出是:
2.7.5 |Anaconda 1.6.0 (64-bit)| (default, May 31 2013, 10:45:37) [MSC v.1500 64 bit (AMD64)]
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
Traceback (most recent call last):
  File ["C:\research\ast\ast\test1.py", line 16, in <module>
    n = ast.parse(src)
AttributeError: 'module' object has no attribute 'parse'但是,当我在cmdline中运行它时,它会打印如下:
C:\research\ast\ast>python test1.py
2.7.5 |Anaconda 1.6.0 (64-bit)| (default, May 31 2013, 10:45:37) [MSC v.1500 64
bit (AMD64)]
['AST', 'Add', 'And', 'Assert', 'Assign', 'Attribute', 'AugAssign', 'AugLoad', '
AugStore', 'BinOp', 'BitAnd', 'BitOr', 'BitXor', 'BoolOp', 'Break', 'Call', 'Cla
ssDef', 'Compare', 'Continue', 'Del', 'Delete', 'Dict', 'DictComp', 'Div', 'Elli
psis', 'Eq', 'ExceptHandler', 'Exec', 'Expr', 'Expression', 'ExtSlice', 'FloorDi
v', 'For', 'FunctionDef', 'GeneratorExp', 'Global', 'Gt', 'GtE', 'If', 'IfExp',
'Import', 'ImportFrom', 'In', 'Index', 'Interactive', 'Invert', 'Is', 'IsNot', '
LShift', 'Lambda', 'List', 'ListComp', 'Load', 'Lt', 'LtE', 'Mod', 'Module', 'Mu
lt', 'Name', 'NodeTransformer', 'NodeVisitor', 'Not', 'NotEq', 'NotIn', 'Num', '
Or', 'Param', 'Pass', 'Pow', 'Print', 'PyCF_ONLY_AST', 'RShift', 'Raise', 'Repr'
, 'Return', 'Set', 'SetComp', 'Slice', 'Store', 'Str', 'Sub', 'Subscript', 'Suit
e', 'TryExcept', 'TryFinally', 'Tuple', 'UAdd', 'USub', 'UnaryOp', 'While', 'Wit
h', 'Yield', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '
__version__', 'alias', 'arguments', 'boolop', 'cmpop', 'comprehension', 'copy_lo
cation', 'dump', 'excepthandler', 'expr', 'expr_context', 'fix_missing_locations
', 'get_docstring', 'increment_lineno', 'iter_child_nodes', 'iter_fields', 'keyw
ord', 'literal_eval', 'mod', 'operator', 'parse', 'slice', 'stmt', 'unaryop', 'w
alk']
<_ast.Module object at 0x0000000002A99EB8>会有什么问题吗?
发布于 2013-08-01 17:04:28
您在ast中导入的PyDev似乎不是标准库中的最后一个模块,而是一个包。
我猜:
在与test1.py相同的目录中有一个
__init__.py文件。 在项目创建期间,您选择了“将项目目录添加到PYTHONPATH”。
这两者结合在一起,就会导致这一错误。标准库中的ast模块由这个ast包隐藏。
在cmdline中,这个ast包不在搜索路径中,因此导入了ast模块。
如果将test1.py更改为
import ast
if __name__ == '__main__':
    print ast.__file__我想PyDev中的输出应该是
C:\research\ast\ast\__init__.pychttps://stackoverflow.com/questions/17999080
复制相似问题