PATH에 새로운 버전의 Python을 추가하면 위험이 있습니까? 즉, 일부 중요한 시스템 프로그램이 충돌할까요?
이것이 이전 python2를 제거하지 않고 python3(또는 python2의 기본이 아닌 버전)을 가리키도록 "python" 명령을 효과적으로 변경한다고 가정합니다. 변경 사항이 루트에 영향을 미치지 않더라도 안전하지 않습니까?
답변1
긴말 짧게~
안전할 수도 있지만...
위험한. 이것이 python
많은 배포판의 명령줄 기본값이 여전히 Python 2인 이유입니다.
이게 정말 당신에게 상처를 줄까요?
어떤 Linux 배포판에 어떤 패키지가 있는지 알지 못하면 알 수 없습니다. 이 작업을 시도하면 어떤 문제가 발생할 수 있는지 알 수 있을 만큼 전 세계의 모든 사용 가능한 소프트웨어 패키지를 충분히 감독할 수 있는 사람이 있는지 의심됩니다.
그러나 시간이 지남에 따라 위험은 점점 줄어들고 있습니다. Python 3은 성숙해지고 있으며 여전히 Python 2를 사용하는 사람들은 위험을 더 잘 인식하고 있으므로 이를 방지할 수 있습니다. 이때 위험가능한충분히 낮아서 벗어날 수 있습니다.
위험은 무엇입니까?
파이썬으로 작성된 리눅스에서 실행되는 많은 프로그램이 있습니다. Python을 실행 파일로 호출하기 때문에 Python을 사용하고 있다는 사실을 깨닫지 못할 수도 있습니다. 그들은 사용한다셰르본명시적으로 호출하지 않고 Python을 호출합니다.
문제는 Shebang인 Python 2용으로 많은 프로그램이 작성되어 있다는 것입니다.예전에는설정 #!/usr/bin/python
. 마찬가지로, puthon 스크립트를 호출하는 쉘 스크립트는 간단히 호출하기 쉽습니다 python script.py
. Python 3으로 전환하면 /usr/bin/python
많은 프로그램이 충돌합니다. 그러나 시간이 지남에 따라 대부분의 오래된 프로그램은 특정 버전( /usr/bin/python2
더 많은 버전 ) 을 요청하도록 수정되었습니다 /usr/bin/python2.7
. 스타일 문제로 인해 Python 3 프로그램에서는 버전을 지정해야 합니다.
변경하기 전에 확인하세요
실제 서버가 없으면 프로덕션 서버에서 이것을 변경하지 않을 것입니다.진짜좋은 이유. 그러나 자신의 노트북을 교체하는 경우 위험은 훨씬 낮아집니다.
나는 그것을 실행하여 다음을 확인하려고 합니다.
grep /usr/bin/python /usr/bin/* /usr/sbin/* 2> /dev/null
/usr/bin/python
... 버전을 지정하지 않은 모든 호출을 찾습니다 . 아무것도 없으면 계속 시도해 보세요. 예상치 못한 상황에 유의하세요.
답변2
요청한 작업을 수행하는 이유에 대한 자세한 내용이 없으면 일반적인 답변 이외의 내용을 작성하기가 어렵습니다.
기존 2.7.y에 3.7.x를 추가하는 것을 고려한다면 원칙적으로 나쁜 일이 발생할 위험은 없습니다. 두 버전의 Python은 격리되어 있으며 서로 다른 종속성 트리를 갖습니다. 하나의 시스템에서 아무런 문제 없이 공존할 수 있습니다. 동시에 실행할 수도 있습니다.
반면, 3.4.z 인스턴스를 실행 중이고 3.7.x를 나란히 설치하려는 경우 그렇게 하지 않는 것이 좋습니다. 다른 버전과 관련된 일부 라이브러리 및 종속성은 의심할 여지 없이 동일한 이름을 가지며 마지막 설치로 대체되므로 이전 버전의 내용이 손상됩니다. 이 특별한 경우에는 최신 버전의 Python으로 업그레이드하는 것이 가장 좋습니다.
다양한 작업에 대해 다양한 라이브러리 버전을 실행해야 하는 경우 언제든지 Jupyter Notebook을 사용할 수 있습니다. 이를 통해 다양한 버전과 해당 패키지 간에 특정 수준의 격리를 달성할 수 있습니다.
편집하다:
귀하의 의견에 따르면 3.7과 2.7을 나란히 설치할 때 두 Python 버전 중 하나가 실행 파일의 기본 경로에 설치됩니다. 파이썬 3.7이라고 하네요. 다른 하나는 python2
cli를 호출하여 평소와 같이 사용됩니다 . Python 2.7이 PATH 변수로 끝나는 경우 Python 3.7을 실행하려면 python3
cli에서 명령을 실행 해야 합니다 . 마지막으로 어느 것이 무엇인지 알아내기 위해 cli에서 실행하면 어느 것을 호출할 수 있는지 , 어느 것을 2~3개의 숫자 접미사로 호출해야 하는지 python --version
확인할 수 있습니다 .python
이는 대부분의 배포판과 거의 모든 버전에서 일반적입니다.