잘 사용하고 있던 Alfred workflow가 동작하지 않는다.. Mac OS 12.3으로 업데이트하고나서 바로 이런 이슈가 터지다니. 속도가 안나 답답하다.
Apple에서 12.3부터 공식적으로 python 2을 지원하지 않는다고 한다. Python 2는 이제 지원도 안해주니 뭐 이해는 간다.
문제는 Alfred workflow가 Python 2 버전만을 지원한다는 것이다. (하..)
Alfred-Workflow only officially supports the system Pythons that come with macOS (i.e. /usr/bin/python), which is 2.6 on 10.6/Snow Leopard and 2.7 on later versions.
그래서 Workflow 제작자들이 Python library인 Alfred-Workflow
로 제작한 경우 스크립트가 안먹어서 이 문제가 터진 것.
해결 방법은 간단하다. python2를 일단 다시 받자.
export PATH="/opt/homebrew/bin:/usr/local/bin:${PATH}"
eval "$(brew shellenv)"
brew install pyenv
pyenv install 2.7.18
ln -s "${HOME}/.pyenv/versions/2.7.18/bin/python2.7" "${HOMEBREW_PREFIX}/bin/python"
위의 커맨드를 하나씩 따라 쳐주자. 그러면 이제 python 2.7이 설치되었다. 그런데 이렇게만 했다고 적용되는 건 아니다. python2를 사용하고 있는 workflow로 가서 python 실행 위치를 지정해주어야 한다.
잘 안보이는데 이렇게 변경해주면 된다.
# From
python filename.py "{query}"
# To
${HOME}/.pyenv/versions/2.7.18/bin/python filename.py "{query}"
다행히 migration을 해준 용자님이 계셨다. 땡큐!
안된다.. 그래서 그냥 python2로 시도해본 결과
Traceback (most recent call last):
File "/Users/user/Library/Application Support/Alfred/Alfred.alfredpreferences/workflows/user.workflow.C9F20046-9639-4B9A-B500-C54916D16E75/workflow/workflow.py", line 2070, in run
self.check_update()
File "/Users/user/Library/Application Support/Alfred/Alfred.alfredpreferences/workflows/user.workflow.C9F20046-9639-4B9A-B500-C54916D16E75/workflow/workflow.py", line 2340, in check_update
run_in_background('__workflow_update_check', cmd)
File "/Users/user/Library/Application Support/Alfred/Alfred.alfredpreferences/workflows/user.workflow.C9F20046-9639-4B9A-B500-C54916D16E75/workflow/background.py", line 235, in run_in_background
retcode = subprocess.call(cmd)
File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/subprocess.py", line 172, in call
return Popen(*popenargs, **kwargs).wait()
File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/subprocess.py", line 394, in __init__
errread, errwrite)
File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/subprocess.py", line 1047, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
??? 이건 또 뭐야. 잘 보니 subprocess.py가 존재하지 않는다고 한다. OSError: [Errno 2] No such file or directory while using python subprocess in Django 해당 글을 보니 함수 호출이 잘못 된 것 같다.
실제로 에러 로그보니 retcode = subprocess.call(cmd)
이부분 설명과 같았다.
그래서 해당 경로로 가서 바꿔줬다.
# From
retcode = subprocess.call(crop)
# To
retcode = subprocess.call(crop, shell=True)
그리고 python 2로 명령어를 바꿔주니 된다!
하, 갑자기 안되서 혈압이 올라버렸다. 이제 Script짜서 자동화 만들어둬야 되네..? 귀찮다. 끝!