Evernote Python API Ошибка аутентификации "Недопустимое значение заголовка" при использовании Jupyter iPython на Mac
У меня возникли некоторые трудности с использованием Evernote Python API с Jupyter iPython из ноутбука или из командной строки. Как ни странно, я был в состоянии сделать это в прошлом, но теперь, похоже, он сломан. Странная часть - это новое поведение только на моем MacBook. Это все еще работает в Jupyter iPython на моем ПК. Я подозреваю, что что-то сломалось в моей настройке, но я не уверен, как диагностировать это дальше.
Во-первых, я смог подключиться к API на Mac и запустить следующий файл.py:
from evernote.api.client import EvernoteClient
dev_token = "my_dev_token_here"
client = EvernoteClient(token=dev_token)
noteStore = client.get_note_store()
nbs= noteStore.listNotebooks()
for nb in nbs: print nb.name
Я получаю ожидаемый результат - список моих ноутбуков Evernote.
Затем я попытался выполнить эти команды в экземпляре CLI ipython. Я получаю следующую ошибку:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-3796a38811af> in <module>()
----> 1 ns = client.get_note_store()
/usr/local/lib/python2.7/site-packages/evernote-1.23.2-py2.7.egg/evernote/api/client.pyc in get_note_store(self)
66 def get_note_store(self):
67 user_store = self.get_user_store()
---> 68 note_store_uri = user_store.getNoteStoreUrl()
69 store = Store(self.token, NoteStore.Client, note_store_uri)
70 if not store: # Trick for PyDev code completion
/usr/local/lib/python2.7/site-packages/evernote-1.23.2-py2.7.egg/evernote/api/client.pyc in delegate_method(*args, **kwargs)
136 return functools.partial(
137 targetMethod, authenticationToken=self.token
--> 138 )(**dict(zip(arg_names, args)))
139 else:
140 return targetMethod(*args, **kwargs)
/usr/local/lib/python2.7/site-packages/evernote-1.23.2-py2.7.egg/evernote/edam/userstore/UserStore.pyc in getNoteStoreUrl(self, authenticationToken)
910 - authenticationToken
911 """
--> 912 self.send_getNoteStoreUrl(authenticationToken)
913 return self.recv_getNoteStoreUrl()
914
/usr/local/lib/python2.7/site-packages/evernote-1.23.2-py2.7.egg/evernote/edam/userstore/UserStore.pyc in send_getNoteStoreUrl(self, authenticationToken)
919 args.write(self._oprot)
920 self._oprot.writeMessageEnd()
--> 921 self._oprot.trans.flush()
922
923 def recv_getNoteStoreUrl(self, ):
/usr/local/lib/python2.7/site-packages/evernote-1.23.2-py2.7.egg/thrift/transport/THttpClient.pyc in _f(*args, **kwargs)
123 orig_timeout = socket.getdefaulttimeout()
124 socket.setdefaulttimeout(args[0].__timeout)
--> 125 result = f(*args, **kwargs)
126 socket.setdefaulttimeout(orig_timeout)
127 return result
/usr/local/lib/python2.7/site-packages/evernote-1.23.2-py2.7.egg/thrift/transport/THttpClient.pyc in flush(self)
148 self.__http.putheader('Content-Length', str(len(data)))
149 for key, value in self.__headers.iteritems():
--> 150 self.__http.putheader(key, value)
151 self.__http.endheaders()
152
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.pyc in putheader(self, header, *values)
1033 for one_value in values:
1034 if _is_illegal_header_value(one_value):
-> 1035 raise ValueError('Invalid header value %r' % (one_value,))
1036
1037 hdr = '%s: %s' % (header, '\r\n\t'.join(values))
ValueError: Invalid header value 'en-devtoken:V=2 / 1.23; Python / 2.7.11 (default, Jan 22 2016, 08:29:18) \n[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)];'
Я получаю аналогичный результат при запуске кода в записной книжке Jupyter iPython. Спасибо за любые подсказки, которые вы можете предоставить.
1 ответ
Invalid header value
ошибка должна быть исправлена в последнем SDK, который является 1.25.2. Пожалуйста, обновите SDK и попробуйте снова.