gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:57 27 4
gpt4 key购买 nike

这很奇怪。我在 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>

可能出了什么问题?

最佳答案

看来你在PyDev中导入的ast并不是标准库中的ast模块,而是一个包。

我猜:

There is a __init__.py file in the same directory as your test1.py.
You selected "Add project directory to the PYTHONPATH" during the project creation.

这两个结合起来,导致了那个错误。标准库中的 ast 模块被这个 ast 包覆盖。

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

如果你把test1.py改成

import ast

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

我猜 PyDev 中的输出是

C:\research\ast\ast\__init__.pyc

关于python ast模块在pydev中失败,在cmdline python中成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17999080/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com