내 Linux Mint DE에 다른 Python 버전이 설치되어 있습니다. 나는 이 update-alternatives --set
명령문을 사용하여 다른 버전 간에 쉽게 전환합니다.
불행히도 때로는 올바른 Python 경로를 식별하는 데 문제가 있는 경우도 있습니다 apt-get install
. upgrade
올바른 대체 설정이 있지만 python2.7을 사용하려는 것 같습니다. 그게 무엇을 가리키는지 , 무엇을 가리키는지 apt-get
알아낼 방법이 없는 것 같아요 ./usr/bin/python
/etc/alternatives/python
/usr/bin/python2.7
/usr/bin/python
완료 부터 직접 심볼릭 링크를 수동으로 생성하면 /usr/bin/python2.7
apt-get
오류가 발생하지 않습니다.
apt-get
재정의 옵션을 사용하여 구성된 Python 버전을 올바르게 감지하고 사용하려면 어떻게 해야 합니까 ?
답변1
문제는 셸(Bash)이 실행 파일을 호출할 때 경로를 해시하는 방식과 관련이 있을 수 있다고 생각합니다.
에서 발췌배쉬 매뉴얼 페이지
Bash는 실행 파일의 전체 경로 이름을 기억하기 위해 해시 테이블을 사용합니다(아래 SHELL BUILTIN COMMANDS 아래의 해시 참조). 해시 테이블에서 명령을 찾을 수 없는 경우에만 PATH의 디렉터리 전체 검색이 수행됩니다.
hash
다음과 같은 명령을 사용하여 해시를 요청할 수 있습니다.
$ hash -l
builtin hash -p /usr/sbin/update-alternatives update-alternatives
builtin hash -p /usr/bin/man man
builtin hash -p /bin/ls ls
스위치를 사용하여 해시가 모든 것을 "잊게" 만들 수 있습니다 -r
.
$ hash -r
manny@manny:~$ hash -l
hash: hash table empty
hash -r
이 프로그램을 실행하기 전에 apt-get
문제가 해결되는지 확인하기 위해 실행 해 보겠습니다 .
또한 출력물을 보고 update-alternatives --query <command>
여러분이 생각하는 값이 포함되어 있는지 확인하겠습니다. 내 java
예 는 다음과 같습니다 .
$ update-alternatives --query java
Name: java
Link: /usr/bin/java
Slaves:
java.1.gz /usr/share/man/man1/java.1.gz
Status: auto
Best: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
Value: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
Alternative: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
Priority: 1071
Slaves:
java.1.gz /usr/lib/jvm/java-7-openjdk-amd64/jre/man/man1/java.1.gz