현재 python 생태계에서 여러 package manager를 전전 하다가 uv 로 바꿔서 써보고 있는데
python로 관리시작.. 이후 pip, pyenv, poetry 등 추천하는거 다 해보다가 cmd 계속 헷갈리기도 하고.. 매번 골치가 아프다 (여기엔 깔려있는데.. 저기엔 안깔려있고.. 내 메모리의 한계..)
또 virtualenv, source.. 이런 거 프로젝트 할때마다 가상환경 올릴때마다 쓰기 싫었다.
호환이 안되는 라이브러리는 매번 다른 도구에 도전해야하는데 (특히 의존성문제로 이것저것 다 시도하는데)
uv pip
라서 다행인 건가..plugins=(git virtualenv)
로 변경하라함. 50 autoload·-U·add-zsh-hook
51
52 _auto_venv(){
53 ··local·venv_path=".venv"
55 ··local·current="$VIRTUAL_ENV"
56
57 ··if·[·-d·"$venv_path"·]·&&·[·-f·"$venv_path/bin/activate"·];·then•
59 ····if·[·-z·"$current"·]·||·[·"$current"·!=·"$(cd·"$venv_path";·pwd)"·];·then
60 ······[·-n·"$current"·]·&&·deactivate·>·/dev/null·2>&1·||·true
61 ······source·"$venv_path/bin/activate"
62 ····fi
63 ··else
65 ····[·-n·"$current"·]·&&·deactivate·>/dev/null·2>&1·||·true
66 ··fi
67 }
68
69 add-zsh-hook·chpwd·_auto_venv
70 _auto_venv·#·터미널·새창에서·1회·실행
typeset -g POWERLEVEL9K_VIRTUALENV_CONTENT_EXPANSION='(${VIRTUAL_ENV:h:t})
Status
p10k configure
을 입력하면 완전 처음 ui/ux , 즉 아이콘부터 처음부터 다시 세팅하라고 나옴DIR
~/.p10k.zsh
에서 virtualenv 세그먼트를 추가/활성화.typeset -g
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
virtualenv
# ...
)
이유
p10k는 흔한 이름(.venv, venv 등)을 지루하다고 보고 숨깁니다: POWERLEVEL9K_VIRTUALENV_GENERIC_NAMES 기본에 포함
pyenv/python 세그먼트가 보이면 virtualenv를 겹치지 않게 숨깁니다: POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV 기본이 false/if-different 계열
또, 표기 형식 미설정 시 테마/세그먼트 배치에 따라 체감이 약할 수 있음
typeset -g POWERLEVEL9K_VIRTUALENV_CONTENT_EXPANSION='${VIRTUAL_ENV:t}' ← 표시 내용 강제
typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐️🐍'
typeset -g POWERLEVEL9K_VIRTUALENV_PROMPT_ALWAYS_SHOW=true ← 항상 표시
typeset -g
POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=true ← pyenv와 함께 표기
typeset -g POWERLEVEL9K_VIRTUALENV_GENERIC_NAMES=() ← 숨김 목록 비우기
_auto_venv:7: _auto_new: function definition file not found
_auto_venv:[:13: ']' expected
[ -n "$current"] && deactivate >/dev/null 2>&1 || true
# 올바름: [ -n "$current" ] && deactivate >/dev/null 2>&1 || true
훅 찾기
grep -nH "_auto_new" ~/.zshrc ~/.zshenv ~/.zprofile ~/.zlogin ~/.oh-my-zsh/custom/**/*(.N) // 이미 typo 수정 후엔 안나옴.
add-zsh-hook -L // “현재 세션 메모리”의 훅 목록입
zsh -x -c 'source ~/.zshrc' 2>&1 | sed -n "1,120p" // 출력으로 에러 라인 확인.
functions _auto_venv | sed -n '1,120p' // 함수정의 확인
whence -v _auto_new || true //함수 존재
해결 방안
# 1) 혹시 남아 있을 수 있는 잘못된 훅/함수 제거
add-zsh-hook -L | grep _auto_new && add-zsh-hook -d chpwd _auto_new // 훅만 지우기
unfunction _auto_new 2>/dev/null || true // 함수 정의 삭제
unalias _auto_new 2>/dev/null || true
# 2) 올바른 훅만 남겨두기(있다면 지우고 다시 등록해도 됨)
add-zsh-hook -d chpwd _auto_venv 2>/dev/null || true
# 3) 함수/훅 재로드
source ~/.zshrc
add-zsh-hook chpwd <func>
로 등록/삭제합니다.2> /dev/null/ ||true
은 에러가 있으면 표시 아니면 표기 없이 넘어감. error: Failed to spawn: main:app (No such file or directory)
uv run main:app --reload
이렇게 써서 에러남<cmd>
: -- 뒤는 그대로 하위 명령에 전달.# hot reload
uv run uvicorn main:app --reload
uv run fastapi dev main.py: