그래서 최근에 bash
shell에서 .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 pip
which python
동일한 위치를 반환해야 합니다 . 이 명령은 디렉터리에서 $PATH
실행 파일이 포함된 첫 번째 위치를 검색합니다.
pyenv
, which pip
및 를 사용하면 which python
동일한 "shims" 디렉터리가 반환되지만 이것이 반드시 실행 파일이 동일한 디렉터리에서 실행된다는 의미는 아닙니다. 이 경우 pyenv which pip
및 를 사용합니다 pyenv which python
.
내 경우에는 ~/.local/bin/
tmux에서 실행했을 때 $PATH 앞에 디렉터리가 추가되어 있었습니다. 실행파일 ~/.local/bin/
은 있는데 실행파일이 없습니다. 그래서 pip 버전 대신 Python 버전을 사용해 보았습니다 .pip
python
pyenv
~/.local/bin/pip
명확히 하기 위해 편집됨:
which pip
다른 경로를 표시 하거나 which python
pyenv의 경우 다른 경로를 표시하면 pyenv which pip
이것이 pyenv which python
문제가 될 수 있습니다.
솔루션은 환경에 따라 달라지므로 모든 경우에 적합한 단일 솔루션을 제공하기는 어렵습니다.
어쩌면 당신 $PATH
은~/.local/bin
앞으로 /usr/bin
그리고 실행파일 ~/.local/bin
은 있는데 실행파일이 없습니다. 그래서 당신의 컴퓨터는 보고 있지만 보고 있지는 않습니다 . 이 경우, 필요하지 않으면 삭제하시면 됩니다 . 또는 pip를 가리키는 심볼릭 링크로 업데이트할 수 있습니다 ( 다른 실행 파일이 있다고 가정). 또는 에 심볼릭 링크를 추가할 수 있습니다 . 또는 검색할 수 있도록 업데이트할 수 있습니다.pip
python
pip
~/.local/bin
python
/usr/bin
pip
~/.local/bin
/usr/bin
pip
~/.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
상황에 따라 다름). 때로는 set
zsh/bash 환경에서 출력을 구별하는 것이 더 쉽습니다. 이 차이는 엄청날 수 있으므로(1,000개 행 이상) 마치 건초 더미에서 바늘을 찾는 것과 같습니다. 누락되거나 변경된 변수(예: PATH ) 및 PYTHONNOUSERSITE, PYTHONPATH 및 PIP로 시작하거나 PIP(또는 PY?) 셸 함수(예: pip() { ... } )를 포함하는 콘텐츠가 계산될 수 있습니다.