ImportError в библиотеке Python
Я пробую библиотеку Python-Upwork и следил за настройкой. pip freeze
показывает необходимые библиотеки:
httplib2==0.10.3
httplib2.system-ca-certs-locater==0.1.2
macholib==1.5.1
matplotlib==1.3.1
modulegraph==0.10.4
numpy==1.8.0rc1
oauth2==1.5.211
urllib3==1.10
Однако попытка создать клиент дает
client = upwork.Client(public_key, secret_key)
File "/Library/Python/2.7/site-packages/upwork/client.py", line 119, in __init__
ca_certs=ca_certs_locater.get(),
File "/Library/Python/2.7/site-packages/ca_certs_locater/__init__.py", line 36, in get
raise ImportError()
Я нашел эту ссылку, и похоже, что Python не может найти сертификат для проверки upwork.com. Я попробовал следующие предложения, но все еще та же проблема. Я не уверен, куда поместить файл cacerts.pem.
2 ответа
Отвечая на мой собственный вопрос. Вот что сработало для меня. Я на Mac.
Загрузите последний файл pem по ссылке внизу этой страницы. Затем принудительно скопируйте в определенное место и переименуйте его:
sudo cp cacert.pem /etc/ssl/certs/ca-certificates.crt
Тогда это работает!
Для этого есть 3 варианта (на основе этого репозитория python-upwork:
- если вы работаете в Linux, переместите сертификат на
/etc/ssl/certs/ca-certificates.crt
- если вы используете osx, переместите сертификат на
/usr/local/etc/openssl/cert.pem
- если вы хотите использовать собственный путь, используйте переменную env
UPWORK_SSL_CERT
и установите значение пользовательского пути.
Пожалуйста, попробуйте использовать переменную env: HTTPLIB_CA_CERTS_PATH
- это должно решить проблему.
Важно Убедитесь, что вы используете httplib2.system-ca-certs-locater 0.1.2
который поддерживает HTTPLIB_CA_CERTS_PATH по сравнению с httplib2-ca_certs_locater
, Смотрите рекомендации здесь - https://github.com/upwork/python-upwork.