Обновление Mac 12.3 убило работу Workflow
CaptainMalReynolds opened this issue · 19 comments
Последнее обновление Mac OS отказывается от Python 2 в пользу Python 3, и скрипт перестал работать полностью.
Возможно ли обновление скрипта чтобы переводчик начал снова работать?
Я портировал на python3 в своем форке: https://github.com/pavel-alay/alfred-translate.
На macOS Monterey 12.2.1 полет нормальный.
@pavel-alay Спасибо, работает! Нужно было только вручную инсталлировать aiohttp библиотеку.
А у меня на 12.3 не хочет корректно работать. Пишет "Translating / Перевожу", но никакого результата на экран не выводиться.
@eugen-nesterov Надо попробовать использовать с логом в альфреде и смотреть что говорит. Либо же просто из консоли смотреть что за ошибка.
@pavel-alay Спасибо, работает! Нужно было только вручную инсталлировать aiohttp библиотеку.
Команда для установки
pip3 install aiohttp
Форк работает на MacOS 12.3.1
Форк не работает на 12.4 (только обновился с 12.2), aiohttp библиотеку установил. Просто команда не выводит ничего, как было до апдейта на 12.3.
Добавлю, что не работают также воркфлоу, которые переписали для работы на 12.3+ с вручную установленным Python 2 (через Homebrew), вот тред.
Переустанавливал Альфред с полной очисткой кэша через системные папки, не помогло. Есть идеи?
@grivachev Можно попробовать в самом альфреде запустить на форкфлоу лог и посмотреть что пишут
Я пробовал инсталлировать модуль через pip3 install aiohttp
но он инсталлировался не в то окружение и дебаг в альфреде все равно писал ModuleNotFoundError: No module named 'aiohttp'
.
Помогло python -m pip install aiohttp
@denisborovikov не работает так у меня — возможно, потому что я на M1, но не уверен.
m.grivachev@macbook-m ~ % python -m pip install aiohttp
zsh: command not found: python
@CaptainMalReynolds а как это там сделать? сори, я чайник и в питоне максимум пандас использовал. поверхностный гугл не помог
@grivachev Я тоже на M1. zsh: command not found: python
у меня такое тоже было, не помню что конкретно делал, можно попробовать добавить линк sudo ln -s /usr/bin/python3 /usr/bin/python
, здесь в первой половине должно быть то что возвращает which python3
.
Как вариант попробовать python3 -m pip install aiohttp
, возможно python3 -m pip3 install aiohttp
Дебаг в альфред, нажать на иконку жука вверху справа, потом не закрывая это окно запустить поиск в альфреде как обычно, внизу будет лог.
@grivachev Вот выше отличный скриншот и рекомендации дал @denisborovikov - у меня тоже М1 и те же проблемы были.
Спасибо всем. Команда от @denisborovikov выдает следующее:
m.grivachev@macbook-m ~ % sudo ln -s /usr/bin/python3 /usr/bin/python
Password:
ln: /usr/bin/python: Operation not permitted
Погуглил, добавил Терминал в Full Disk Access, перезагрузил — не помогло. Замечу, что я не администратор компа (он корпоративный), но права у меня достаточно широкие и Homebrew, например, разрешал устанавливаться.
Вот логи альфреда:
UPD: python3 -m pip install aiohttp
выдает такое (скрин ниже); вроде установил раньше без проблем по команде которую давали выше в ветке. Команда python3 -m pip3 install aiohttp
выдает No module named pip3
Судя по всему, aiohttp
уже установлен, а вот бинарник python3 в usr/local/bin/python3
не находится. Попробуйте переустановить через homebrew brew update && brew reinstall python
. Можно попробовать перелинковать brew unlink python@3.9 && brew link python@3.9
, в последней команде возможно другая версия. Правда после переустановки возможно нужно будет опять установить aiohttp
.
Везде пишу возможно, потому что я не настоящий сварщик, я так же проходил через эти шаги и что-то помогло.
Кстати вот еще вариант - если в терминале написать python3
то питон запускается? Если да, то можно просто прописать другой путь, в альфреде открыть воркфлоу, дважды кликнуть на Script filter
- тот что с синей иконкой глобуса и usr/local/bin/python3
поменять на просто python3
. Для второй иконки тоже самое.
@denisborovikov второй способ сработал. Ура, а то я отчаялся совсем уже — теперь осталось починить нерабочие воркфлоу на втором питоне, щас буду через хомбрю бороться.
Спасибо большое!
Кстати вот еще вариант - если в терминале написать
python3
то питон запускается? Если да, то можно просто прописать другой путь, в альфреде открыть воркфлоу, дважды кликнуть наScript filter
- тот что с синей иконкой глобуса иusr/local/bin/python3
поменять на простоpython3
. Для второй иконки тоже самое.
А как вот с такой проблемой бороться?
[12:21:21.513 PM] Translate[[Script Filter](alfredpreferences:workflows%3Eworkflow%3Euser.workflow.A111DBCF-5725-4C75-9BEC-F3A446A3DA13%3E94EED11C-93A9-4FF4-8F28-14E546743485)] Queuing argument 'head'
[12:21:23.021 PM] Translate[[Script Filter](alfredpreferences:workflows%3Eworkflow%3Euser.workflow.A111DBCF-5725-4C75-9BEC-F3A446A3DA13%3E94EED11C-93A9-4FF4-8F28-14E546743485)] Script with argv '(null)' finished
[12:21:23.021 PM] ERROR: Translate[[Script Filter](alfredpreferences:workflows%3Eworkflow%3Euser.workflow.A111DBCF-5725-4C75-9BEC-F3A446A3DA13%3E94EED11C-93A9-4FF4-8F28-14E546743485)] Code 1: Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/aiohttp/connector.py", line 986, in _wrap_create_connection
return await self._loop.create_connection(*args, **kwargs) # type: ignore[return-value] # noqa
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/base_events.py", line 989, in create_connection
ssl_handshake_timeout=ssl_handshake_timeout)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/base_events.py", line 1017, in _create_connection_transport
await waiter
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/sslproto.py", line 530, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/sslproto.py", line 189, in feed_ssldata
self._sslobj.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", line 774, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1091)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "./translate.py", line 179, in <module>
print(get_output(sys.argv[1]))
File "./translate.py", line 150, in get_output
responses = asyncio.run(process_requests(input_string))
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/runners.py", line 43, in run
return loop.run_until_complete(main)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/base_events.py", line 587, in run_until_complete
return future.result()
File "./translate.py", line 137, in process_requests
process_translate_request(input_string, source_lang, target_lang, session)
File "./translate.py", line 109, in process_vocabulary_request
return await process_get_response_as_json(article_url, session)
File "./translate.py", line 83, in process_get_response_as_json
async with session.get(url=url) as response:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/aiohttp/client.py", line 1138, in __aenter__
self._resp = await self._coro
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/aiohttp/client.py", line 536, in _request
req, traces=traces, timeout=real_timeout
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/aiohttp/connector.py", line 542, in connect
proto = await self._create_connection(req, traces, timeout)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/aiohttp/connector.py", line 907, in _create_connection
_, proto = await self._create_direct_connection(req, traces, timeout)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/aiohttp/connector.py", line 1206, in _create_direct_connection
raise last_exc
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/aiohttp/connector.py", line 1187, in _create_direct_connection
client_error=client_error,
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/aiohttp/connector.py", line 988, in _wrap_create_connection
raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host dictionary.yandex.net:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1091)')]
Быстрый гуглеж дает вот эту ссылку https://stackoverflow.com/questions/27835619/urllib-and-ssl-certificate-verify-failed-error
Похоже на специфическую проблему для версии python и OSX. Но это не точно.