2016-03-13 8 views
0

Я использую отличный модуль requests во встроенной версии Python 2.7 в приложении на C++ в Mac OS. Мой код отлично работает на моем Mac, но он не работает на компьютере клиента. Он использует ту же версию Python и хост-приложение C++. Ошибка он получает со следующим URL является:SSLError: Не каталог

http://www.hantmade.com/backstage/thumb/1450544739_Impression%20XL%20300%20RZ.stage.png 

Traceback (most recent call last): 
    File "'hantmade-storage.pyp'", line 1468, in online_load_thumbnail 
    File "c:\maxon\cinema 4d r16 dev\plugins\hantmade_storage\devel\requests/requests\api.py", line 69, in get 
    File "c:\maxon\cinema 4d r16 dev\plugins\hantmade_storage\devel\requests/requests\api.py", line 50, in request 
    File "c:\maxon\cinema 4d r16 dev\plugins\hantmade_storage\devel\requests/requests\sessions.py", line 468, in request 
    File "c:\maxon\cinema 4d r16 dev\plugins\hantmade_storage\devel\requests/requests\sessions.py", line 597, in send 
    File "c:\maxon\cinema 4d r16 dev\plugins\hantmade_storage\devel\requests/requests\sessions.py", line 195, in resolve_redirects 
    File "c:\maxon\cinema 4d r16 dev\plugins\hantmade_storage\devel\requests/requests\sessions.py", line 576, in send 
    File "c:\maxon\cinema 4d r16 dev\plugins\hantmade_storage\devel\requests/requests\adapters.py", line 433, in send 
SSLError: [Errno 20] Not a directory 

Note: The absolute Windows-style paths seem to stem from the fact that the requests module is loaded from a set of .pyc files and apparently the original source file's path is compiled into them.

Еще раз, я не могу воспроизвести этот вопрос на моем Mac, к сожалению. Откуда могла возникнуть эта ошибка? Почему «не каталог»? Есть ли какие-либо шаги для отладки этой проблемы?

При необходимости я могу войти в систему клиента через TeamViewer и изменить исходный код, чтобы отладить проблему, только я не ощущал ее необходимости, так как я полностью озадачен этой ошибкой.

Обновление 2016-03-15

Вдруг я получаю SSLError и сообщение на стороне моего клиента изменилось также. Как ни странно, в коде ничего не изменилось. Я буду продолжать поиск в Google, эти сообщения об ошибках кажутся информативными, и в конце концов они уже обсуждают их.

Что мой клиент видит:

SSLError: [Errno 185090050] _ssl.c:326: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib 

Что я вижу:

SSLError: [Errno 1] _ssl.c:480: error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm 

ответ

2

Для ошибки «Не директории», мы решили, что распределенная версия программного обеспечения не укладывалось запрос файл cacert.pem файла в Python Egg. Это был один вопрос.

Другая проблема заключается в том, что при использовании Python 2.6 или старше модуль ssl не смог установить связь с сервером. Я смог решить это, скомпилировав Python SSL module вручную в более новой версии. Так как программное обеспечение работает во встроенной версии Python, я не могу просто уйти с помощью зависимостей и сделать свое программное обеспечение максимально инкапсулированным. Я использую свой класс _localimport, чтобы временно удалить исходный модуль ssl, импортировать новый скомпилированный модуль ssl и requests.

with _localimport(lib_path) as importer: 
    importer.disable(['ssl', 'requests']) 
    import ssl, requests 
    assert issubpath(ssl.__file__, lib_path) 
    assert issubpath(requests.__file__, lib_path) 

Libs Папка:

libs/ 
    ssl-1.16-macosx-10.5-x86_64-2.6.egg 
    requests-v2.9.1.egg 

Обратите внимание, что эти проблемы с SSL только ocurred на Mac.

+0

Спасибо за это. У меня была такая же проблема при установке моего пакета (который зависит от локальной установки модуля запросов) с помощью инструментов установки. Файл pem не упаковывается вместе с яйцом. – SamuelN

Смежные вопросы