0

以下 python 脚本运行良好:

#!/usr/bin/python
import simplejson

print str(simplejson.loads('{"a": "abc"}'))

然后冷冻后:

cxfreeze test.py --target-dir dist

Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/cx_Freeze/initscripts/Console.py", line 29, in <module>
    exec code in m.__dict__
  File "test.py", line 3, in <module>
    import simplejson as json
  File "/usr/lib/python2.7/dist-packages/simplejson/__init__.py", line 111, in <module>
    from decoder import JSONDecoder, JSONDecodeError
  File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 29, in <module>
    NaN, PosInf, NegInf = _floatconstants()
  File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 21, in _floatconstants
    _BYTES = '7FF80000000000007FF0000000000000'.decode('hex')
LookupError: unknown encoding: hex

这无济于事:

cxfreeze test.py --target-dir dist --include-modules simplejson

从 simplejson 切换到 json 也没有帮助。

冻结 simplejson 部分时似乎没有错误:

P simplejson                /usr/lib/python2.7/dist-packages/simplejson/__init__.py
m simplejson._speedups      /usr/lib/python2.7/dist-packages/simplejson/_speedups.so
m simplejson.decoder        /usr/lib/python2.7/dist-packages/simplejson/decoder.py
m simplejson.encoder        /usr/lib/python2.7/dist-packages/simplejson/encoder.py
m simplejson.ordered_dict   /usr/lib/python2.7/dist-packages/simplejson/ordered_dict.py
m simplejson.scanner        /usr/lib/python2.7/dist-packages/simplejson/scanner.py
4

2 回答 2

1

(转发为答案)

您需要包含模块encodings.hex_codec。我已经打开了一个问题来自动完成这项工作。

于 2013-01-11T17:26:36.340 回答
0

添加:

从编码导入 hex_codec

并在使用 freeze.py 构建时添加-m 编码。它对我有用。

于 2015-07-07T06:02:35.207 回答