【问题标题】:Python3 -- objectpath ...broken?Python3——对象路径……坏了?
【发布时间】:2018-11-21 21:33:13
【问题描述】:

在尝试在 Python3 脚本中使用 objectpath 失败数小时后,我做了以下简单的实验:

>>> from objectpath import *
>>> tree=Tree({"a":1})
>>> tree.execute("$.a")

预期输出:1

用python成功(二)

~$ python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from objectpath import *
>>> tree=Tree({"a":1})
>>> tree.execute("$.a")
1
>>>

python3 出错:

我的 Python3 安装有问题吗? P3 中的 objectpath 既不适用于脚本也不适用于控制台

$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from objectpath import *
>>> tree=Tree({"a":1})
>>> tree.execute("$.a")
Traceback (most recent call last):
File "/home/lisa/.local/lib/python3.6/site- 
packages/objectpath/core/parser.py", line 398, in tokenize_python
 yield type_map[t[0]], t[1]
KeyError: 4

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/lisa/.local/lib/python3.6/site- 
packages/objectpath/core/interpreter.py", line 605, in execute
tree=self.compile(expr)
File "/home/lisa/.local/lib/python3.6/site- 
packages/objectpath/core/interpreter.py", line 38, in compile
ret=EXPR_CACHE[expr]=parse(expr,self.D)
File "/home/lisa/.local/lib/python3.6/site- 
packages/objectpath/core/parser.py", line 464, in parse
r=expression().getTree()
File "/home/lisa/.local/lib/python3.6/site- 
packages/objectpath/core/parser.py", line 449, in expression
left=t.led(left)
File "/home/lisa/.local/lib/python3.6/site- 
 packages/objectpath/core/parser.py", line 264, in led
advance()
File "/home/lisa/.local/lib/python3.6/site- 
packages/objectpath/core/parser.py", line 161, in advance
token=nextToken()
File "/home/lisa/.local/lib/python3.6/site- 
packages/objectpath/core/parser.py", line 413, in tokenize
for ID, value in source:
File "/home/lisa/.local/lib/python3.6/site- 
packages/objectpath/core/parser.py", line 405, in tokenize_python
raise SyntaxError("Syntax error")

【问题讨论】:

    标签: python python-3.x objectpath


    【解决方案1】:

    要在 Python 3.x 中运行它,你应该 pip3 install objectpath 否则它将无法工作。

    请看下面我是如何运行你的代码的:

    dell@dell-XPS-15-9572:~/Desktop$ pip3 install objectpath
    Collecting objectpath
    Downloading https://files.pythonhosted.org/packages/21/6a/ed435be72edd1d60b7363cbb38c34aff3004fee02d1c7f9f01435c318cdb/objectpath-0.5-py2.py3-none-any.whl
    Installing collected packages: objectpath
    Successfully installed objectpath-0.5
    dell@dell-XPS-15-9572:~/Desktop$ python3
    Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
    [GCC 7.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more 
    information.
    >>> from objectpath import *
    >>> tree=Tree({"a":1})
    >>> tree.execute("$.a")
    1
    >>> 
    

    【讨论】:

    • 但我的说:使用缓存收集对象路径 - 我如何强制 pip3 下载正确的 - 似乎它使用缓存中的 P2 版本
    • 尝试pip uninstall objectpath卸载包。
    • 你会有一个版本 2 的 pip 和一个版本 3。你可以使用 python3 -mpip 或 python2 -mpip 但我一直在虚拟环境中使用 pip。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2012-07-06
    • 2015-12-07
    • 2018-08-12
    • 1970-01-01
    • 2017-04-19
    • 2018-06-06
    相关资源
    最近更新 更多