Bash에서 zsh로 변경한 후 pip 오류

Bash에서 zsh로 변경한 후 pip 오류

그래서 최근에 bashshell에서 .pip로 변경했는데 zsh, pip를 사용하는 데 문제가 있습니다 python. 내가 시도할 때

pip list
ModuleNotFoundError: No module named 'pip._internal.main'

이렇게 하면 which pip나에게 제공되므로 /home/marvin/.local/bin/pip내 줄에 표시된 줄을 따라 bashrc이것을 추가합니다.zshrc

# adding packages installed via pip
export PATH="/home/marvin/.local/bin:$PATH"

또한 이를 시험해 보기 위해 셸과 머신을 다시 시작했습니다. 여전히 pip를 사용하여 가상 환경을 처리할 수 없습니다. 누구든지 이 문제를 해결하도록 안내해 줄 수 있나요?

[편집하다]

그래서 내가 그랬어

python3 -m pip install --user --upgrade pip

그리고 그것이 글로벌 규모로 작동하도록 하세요. 안타깝게도 가상 환경을 다시 만들어야 했습니다. 문제는 쉘 간 전환이 환경을 다시 생성한다는 것을 의미한다는 것입니다. 이 작업을 수행하는 더 좋은 방법이 있어야 합니다.

답변1

이 오류 메시지를 보았는데 이는 내 $PATH.

다음은 몇 가지 문제 해결 단계입니다.

를 사용하여 경로를 볼 수 있습니다 echo $PATH.

which pipwhich python동일한 위치를 반환해야 합니다 . 이 명령은 디렉터리에서 $PATH실행 파일이 포함된 첫 번째 위치를 검색합니다.

pyenv, which pip및 를 사용하면 which python동일한 "shims" 디렉터리가 반환되지만 이것이 반드시 실행 파일이 동일한 디렉터리에서 실행된다는 의미는 아닙니다. 이 경우 pyenv which pip및 를 사용합니다 pyenv which python.

내 경우에는 ~/.local/bin/tmux에서 실행했을 때 $PATH 앞에 디렉터리가 추가되어 있었습니다. 실행파일 ~/.local/bin/은 있는데 실행파일이 없습니다. 그래서 pip 버전 대신 Python 버전을 사용해 보았습니다 .pippythonpyenv~/.local/bin/pip

명확히 하기 위해 편집됨:

which pip다른 경로를 표시 하거나 which pythonpyenv의 경우 다른 경로를 표시하면 pyenv which pip이것이 pyenv which python문제가 될 수 있습니다.

솔루션은 환경에 따라 달라지므로 모든 경우에 적합한 단일 솔루션을 제공하기는 어렵습니다.

어쩌면 당신 $PATH~/.local/bin 앞으로 /usr/bin그리고 실행파일 ~/.local/bin은 있는데 실행파일이 없습니다. 그래서 당신의 컴퓨터는 보고 있지만 보고 있지는 않습니다 . 이 경우, 필요하지 않으면 삭제하시면 됩니다 . 또는 pip를 가리키는 심볼릭 링크로 업데이트할 수 있습니다 ( 다른 실행 파일이 있다고 가정). 또는 에 심볼릭 링크를 추가할 수 있습니다 . 또는 검색할 수 있도록 업데이트할 수 있습니다.pippythonpip~/.local/binpython/usr/binpip~/.local/bin/usr/binpip~/.local/bin/python/usr/bin/python$PATH/usr/bin 앞으로찾다 ~/.local/bin.

솔루션은 환경, Python 설치 방법, 사용하려는 버전 등에 따라 다릅니다.

답변2

이 이상한 동작은 일부 PATH 및 python/pip 버전 차이로 인해 발생할 수 있습니다.

Bash 및 zsh에서 다음 명령의 출력을 확인하는 것이 좋습니다.

pip --version
python -m pip --version
pip2 --version
python2 -m pip --version
pip3 --version
python3 -m pip --version

~처럼@쿠살라난다제안, 초기화 파일도 확인해야 합니다(예: .bashrc상황에 따라 다름). 때로는 setzsh/bash 환경에서 출력을 구별하는 것이 더 쉽습니다. 이 차이는 엄청날 수 있으므로(1,000개 행 이상) 마치 건초 더미에서 바늘을 찾는 것과 같습니다. 누락되거나 변경된 변수(예: PATH ) 및 PYTHONNOUSERSITE, PYTHONPATH 및 PIP로 시작하거나 PIP(또는 PY?) 셸 함수(예: pip() { ... } )를 포함하는 콘텐츠가 계산될 수 있습니다.

관련 정보