2015-02-04 3 views
1

Когда я пытаюсь и подключиться к GMAIL через этот код:Ошибка пакета Pocks SocksiPy: TypeError: Тип str не поддерживает API-интерфейс буфера для строки?

import socks 
import imaplib 
import socket 
import socks 
s = socks.socksocket() 
s.setproxy(socks.PROXY_TYPE_HTTP, '192.168.208.51', 3128) 
s.connect(('imap.gmail.com', 993)) 

Я получаю сообщение об ошибке:

Traceback (most recent call last): 
File "<pyshell#18>", line 1, in <module> 
s.connect(('imap.gmail.com', 993)) 
File "C:\Python34\lib\site-packages\socks.py", line 406, in connect 
self.__negotiatehttp(destpair[0],destpair[1]) 
File "C:\Python34\lib\site-packages\socks.py", line 357, in __negotiatehttp 
while resp.find("\r\n\r\n")==-1: 
TypeError: Type str doesn't support the buffer API 

Любые идеи? Im на компьютере, который использует прокси-сервер, используя SocksiPy для подключения к imap.gmail.com

ответ

0

Нет ничего плохого в вашем коде; вы используете версию SocksiPy, которая не была перенесена на Python 3. Вы должны перейти на версию 1.02. Или вы должны переключиться на Python 2.


Explaination:

Это Python 3. В отличие от Python 2, bytes и str объекты не являются взаимозаменяемыми. Если вы попытаетесь сделать такие вещи, как это:

>>> b'abc'.find('a') 

Вы получите сообщение об ошибке, которое вы видите. Фактически, «API-интерфейс буфера» - это тот, который реализован объектами bytes.

+0

Как обновить? Я использую окна? –

+1

@SteMain: похоже, эта версия доступна только на Debian/Ubuntu и производных. Если бы я был вами, я бы [скачать] (http://launchpadlibrarian.net/188360484/python3-socksipy_1.02-2_all.deb) пакет Ubuntu, извлечь его и скопировать файл 'socks.py' в' C : \ Python34 \ Lib \ сайт-packages'. –

+0

Arw - настоящая боль в ... потому что весь мой код для Python34 на windows :( –