2011-10-17 24 views
5

Tôi đang sử dụng API Twitter có tên Tweepy. Nó đã được làm việc tốt, sau đó tôi khởi động lại máy chủ và bây giờ tôi nhận được điều này:Python: LookupError: mã hóa không xác định: hex

>>> import tweepy 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "tweepy/__init__.py", line 17, in <module> 
    from tweepy.streaming import Stream, StreamListener 
    File "tweepy/streaming.py", line 16, in <module> 
    json = import_simplejson() 
    File "tweepy/utils.py", line 83, in import_simplejson 
    import simplejson as json 
    File "build/bdist.linux-i686/egg/simplejson/__init__.py", line 111, in <module> 

    File "build/bdist.linux-i686/egg/simplejson/decoder.py", line 29, in <module> 
    File "build/bdist.linux-i686/egg/simplejson/decoder.py", line 21, in _floatconstants 
LookupError: unknown encoding: hex 

Tôi cố gắng này quá:

from encodings import hex_codec 

Và nó đã không giúp đỡ.

Mọi ý tưởng tại sao?

+0

Có một số loại cài đặt môi trường nào bạn đã mất kể từ khi khởi động lại không? – Raz

+0

Không phải là tôi biết. – Zeno

Trả lời

0

Bạn đã thay đổi cài đặt Python chưa? Trong 3.x, dường như có ít codec hơn trong 2.x. Đặc biệt, thiếu hexbase64, AFAIK.

+0

Không. Tôi đã luôn luôn được sử dụng Python 2.6.2 – Zeno

1

Tôi cũng gặp phải sự cố này, nhưng nó đã xảy ra trên máy tính mà tôi không có quyền truy cập.

tôi đã đổi tên mã hóa/hex_codec.py (và xóa các pyc) nhìn giống như những gì sẽ làm cho lỗi này xảy ra

ActivePython 2.7.0.2 (ActiveState Software Inc.) based on 
Python 2.7 (r27:82500, Aug 23 2010, 17:18:21) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import json 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "c:\Python27\lib\json\__init__.py", line 108, in <module> 
    from .decoder import JSONDecoder 
    File "c:\Python27\lib\json\decoder.py", line 24, in <module> 
    NaN, PosInf, NegInf = _floatconstants() 
    File "c:\Python27\lib\json\decoder.py", line 18, in _floatconstants 
    _BYTES = '7FF80000000000007FF0000000000000'.decode('hex') 
LookupError: unknown encoding: hex 
>>> 

kiểm tra tập tin của bạn, hex_encoding có lẽ là mất tích. hoặc bạn có thể có điều gì lạ trong PATH/PYTHON_HOME

bạn có thể thực hiện printenv trước khi chạy mã không? và "in sys.path" trong trình thông dịch?

2

Tôi đã trải qua những vấn đề tương tự (với json), giải pháp là để sao chép mất file 'hex_codec.py' tại thư mục Lib của bạn 'mã hóa':

Hãy chắc chắn rằng bạn đã cài đặt Python 2.7.X (bạn sẽ thấy nó hữu ích sau này).

  1. Tới thư mục cài đặt 2.7.X Python của bạn cho thư mục 'mã hóa' (ví dụ cho nền tảng Win:. 'C: \ Python27 \ Lib \ mã hóa')
  2. Sao chép 'hex_codec.py' hoặc mỗi đơn tập tin '.py' vào thư mục 'build/bdist.linux-i686/egg/encodings' của bạn. ...
  3. LỢI NHUẬN
+1

Hình như binascii.so tồn tại, thay vì binascii.py – alanjds

+0

Bất kỳ ý tưởng nguyên nhân gốc rễ của điều này là gì? – jterrace

1

Tôi có cùng một vấn đề cố gắng android-python27 (https://code.google.com/p/android-python27/issues/detail?id=30).

Được giải quyết bằng cách sao chép phiên bản binascii.py từ PyPy và sửa đổi để thử binascii.so và dự phòng thành python tinh khiết nếu không thể nhập nhị phân.

Nhận kết quả tại đây: https://gist.github.com/alanjds/6091309

+0

thấy điều này trên một xây dựng python tĩnh. được giải quyết bằng cách cho phép binascii trong 'Modules/Setup'. – minghua