feat: companion.py 다운로드 링크 + 시작 시 의존성 점검
- claude-app/code 에디터의 companion 상태 표시 옆에 companion.py 다운로드 링크(⬇) 추가 — 업데이트될 때마다 재다운로드해야 함을 쉽게 안내 - companion.py를 직접 실행하면 시작 배너 다음에 tkinter(폴더 선택창)/ pywinpty(Windows 터미널)/pystray+Pillow(트레이) 의존성 상태를 요약해서 보여주고, 없는 항목은 설치 명령까지 안내 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -671,6 +671,45 @@ async def main():
|
||||
await asyncio.Future()
|
||||
|
||||
|
||||
def _check_dependencies():
|
||||
"""선택적 의존성 상태를 확인해 시작 시 한눈에 보여준다.
|
||||
websockets는 필수라 파일 최상단에서 이미 체크됨(없으면 여기까지 못 옴)."""
|
||||
checks = [('websockets (필수)', True, '')]
|
||||
|
||||
try:
|
||||
import tkinter # noqa: F401
|
||||
checks.append(('tkinter — 폴더 선택창', True, ''))
|
||||
except ImportError:
|
||||
hint = 'python.org 설치본은 기본 포함, 커스텀/최소 설치라면 재설치 필요' if IS_WINDOWS else 'sudo apt install python3-tk (또는 배포판에 맞는 tk 패키지)'
|
||||
checks.append(('tkinter — 폴더 선택창', False, hint))
|
||||
|
||||
if IS_WINDOWS:
|
||||
has_pty = False
|
||||
for mod in ('pywinpty', 'winpty'):
|
||||
try:
|
||||
__import__(mod)
|
||||
has_pty = True
|
||||
break
|
||||
except ImportError:
|
||||
continue
|
||||
checks.append(('pywinpty — 터미널 색상/크기 지원', has_pty, '' if has_pty else 'pip install pywinpty'))
|
||||
|
||||
try:
|
||||
import pystray # noqa: F401
|
||||
from PIL import Image # noqa: F401
|
||||
checks.append(('pystray+Pillow — 시스템 트레이 실행', True, ''))
|
||||
except ImportError:
|
||||
checks.append(('pystray+Pillow — 시스템 트레이 실행', False, 'pip install pystray Pillow'))
|
||||
|
||||
print('의존성 상태:', flush=True)
|
||||
for name, ok, hint in checks:
|
||||
line = f' {"✅" if ok else "⚠️ "} {name}'
|
||||
if not ok and hint:
|
||||
line += f' → {hint}'
|
||||
print(line, flush=True)
|
||||
print(flush=True)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
print('━' * 40)
|
||||
@@ -678,9 +717,12 @@ if __name__ == '__main__':
|
||||
print(f'플랫폼: {"Windows" if IS_WINDOWS else "Unix/Linux"}')
|
||||
print('━' * 40)
|
||||
print(f'Python: {sys.executable}')
|
||||
print()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
_check_dependencies()
|
||||
|
||||
try:
|
||||
import pystray
|
||||
from PIL import Image
|
||||
|
||||
Reference in New Issue
Block a user