首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python ast模块在pydev中失败,在cmdline python中成功。

python ast模块在pydev中失败,在cmdline python中成功。
EN

Stack Overflow用户
提问于 2013-08-01 16:03:20
回答 1查看 2.1K关注 0票数 3

这太奇怪了。我在PyDev中运行这个程序

代码语言:javascript
运行
复制
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

它的产出是:

代码语言:javascript
运行
复制
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中运行它时,它会打印如下:

代码语言:javascript
运行
复制
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>

会有什么问题吗?

EN

Stack Overflow用户

回答已采纳

发布于 2013-08-01 17:04:28

您在ast中导入的PyDev似乎不是标准库中的最后一个模块,而是一个包。

我猜:

在与test1.py相同的目录中有一个__init__.py文件。 在项目创建期间,您选择了“将项目目录添加到PYTHONPATH”。

这两者结合在一起,就会导致这一错误。标准库中的ast模块由这个ast包隐藏。

在cmdline中,这个ast包不在搜索路径中,因此导入了ast模块。

如果将test1.py更改为

代码语言:javascript
运行
复制
import ast

if __name__ == '__main__':
    print ast.__file__

我想PyDev中的输出应该是

代码语言:javascript
运行
复制
C:\research\ast\ast\__init__.pyc
票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17999080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档