사람들이 일반적으로 알아야 할 것이 무엇인지 알고 싶습니다.파이썬(인터프리터) Linux 쉘에서 사용할 때? 이게 내가 가진 거야루트 다이어그램:
# ls -al /usr/bin/python*; file /usr/bin/python; /usr/bin/python-wrapper --version
lrwxrwxrwx 1 root root 14 Dec 26 04:49 /usr/bin/python -> python-wrapper
lrwxrwxrwx 1 root root 9 Dec 26 04:51 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 6144 Jan 8 21:22 /usr/bin/python2.7
-rwxr-xr-x 1 root root 1450 Jan 8 21:22 /usr/bin/python2.7-config
lrwxrwxrwx 1 root root 9 Dec 26 04:49 /usr/bin/python3 -> python3.3
-rwxr-xr-x 1 root root 10304 Jan 19 20:37 /usr/bin/python3.3
-rwxr-xr-x 1 root root 1753 Jan 19 20:37 /usr/bin/python3.3-config
-rwxr-xr-x 1 root root 217 Dec 26 04:49 /usr/bin/python-config
lrwxrwxrwx 1 root root 16 Jan 8 21:22 /usr/bin/python-config-2.7 -> python2.7-config
lrwxrwxrwx 1 root root 16 Jan 19 20:37 /usr/bin/python-config-3.3 -> python3.3-config
-rwxr-xr-x 1 root root 10384 Dec 26 05:24 /usr/bin/python-wrapper
/usr/bin/python: symbolic link to `python-wrapper'
Python 3.3.3
그래서 내 경우에는 통화가 python
버전 3.3을 시작했습니다. 내가 사용하는 대부분의 배포판에는 여러 버전이 설치되어 있습니다. 그리고 최신 버전은 이전 버전과 호환되지 않으며 일부 기능은 "이전" 버전으로 백포트되었습니다. 두 버전 모두의 상황이 일시적이라고 생각합니까? 이제 Python 스크립트를 실행해야 할 때마다 두 Python 버전을 모두 사용해 확인합니다.
Python을 사용하여 셸에서 스크립트를 실행하는 것에 대해 알아야 할 다른 사항이 있나요? 그렇다면 무엇입니까? 누군가 Python 스크립트를 작성하여 env python
첫 번째 줄에 사용했습니다. 두 버전 모두와 호환되어야 한다는 뜻인가요? Python 래퍼는 무엇에 사용되나요?
답변1
PEP 394Python 설치 방법과 Shebang 라인에서 사용할 항목을 지정합니다. #!/usr/bin/env python2
Python 2 스크립트 및 #!/usr/bin/env python3
Python 3 스크립트 와 함께 사용합니다 ( #!/usr/bin/env python
스크립트가 둘 다와 호환되는 경우).
실제로 사람들은 #!/usr/bin/env python
수년간 shebang 라인을 사용해왔기 때문에 이를 필요로 하는 스크립트를 찾으면 python
Python 2 스크립트일 가능성이 높습니다.
Python 2와 Python 3은 호환되지 않으므로 두 버전은 오랫동안 공존하게 됩니다. 그들은 우연히 비슷하지만 대부분의 프로그램과 호환될 정도는 아닌 두 가지 다른 언어입니다. python
대부분의 시스템은 현재 Python 2를 유지하지만 Arch Linux는 Python 3으로 전환했습니다 python
. 이러한 불일치로 인해 PEP 394는 shebang에서 명시적 버전을 사용하도록 권장합니다. 불행하게도 인생은 단순하지 않기 때문에 일부 오래된 시스템에는 아직 이 기능이 없을 수도 있습니다 python2
(데비안 wheezy는 위기 상황에서만 이를 얻습니다).
언어 디자이너의 관점에서 보면 "Python 2.x는 언어의 유산이고 Python 3.x는 언어의 현재이자 미래"이지만 여전히 Python 2 코드가 많이 있습니다. 타사 라이브러리(다양한 타사 라이브러리는 Python의 장점 중 하나)를 사용하는 사람의 관점에서 보면 이제 Python 2입니다.
에 관해서는 python-wrapper
포장지입니다.Python 구현 중에서 선택. 이건 어제의 포장지, 오늘의 포장지는python-exec
. 나는 그들이 무엇을 하는지 모른다.
답변2
짧은 답변: Python 3을 사용하세요! 진심으로, 이건 굉장해요! 모든 배포판에서 Python 3을 기본 버전으로 사용하고 싶습니다.
프로그램 사용자와 어떤 라이브러리가 사용되는지 알지 못하면 Python 2를 사용해야 하는지, Python 3을 사용해야 하는지에 대한 질문에 답하기는 어렵습니다. 두 가지 모두에 적합하도록 만드는 것이 좋습니다.
다음 조건 중 하나가 존재하는 경우 Python 2를 사용하십시오.
- 아직 이식되지 않은 라이브러리를 사용하고 있습니다. 더 이상 Python 2가 필요한 라이브러리가 많지 않습니다.
- 배포 대상 또는 고객이 여전히 Python 2에 갇혀 있습니다.
더 자세한 답변을 보려면 다음을 참조하세요.파이썬 위키그리고이 문제에 관한 웹페이지.
Virtualenvs 는 프로젝트와 Python 설치를 격리하는 데 매우 인기 #!/usr/bin/env python
가 있으므로 virtualenvs를 작동시키기 위해 대신 simple을 $PATH
사용했습니다 . Python 온라인 문서는 다음에서만 제공됩니다.#!/usr/bin/env python
#!/usr/bin/python
장소이 호출을 정확하게 사용하세요. 프로젝트에 Python 2 인터프리터가 포함된 virtualenv가 필요한 것 같습니다. 이 #!/usr/bin/env
문제가 논의되었습니다.여기그리고여기.
답변3
누군가 #!/usr/bin/env python
첫 번째 줄에 사용하면 스크립트를 실행하는 인터프리터가 에서 발견된 첫 번째 인터프리터이고 $PATH
스크립트가 두 버전 모두와 호환된다고 간주하지 않는다는 의미입니다.
스크립트에 사용되는 Python 버전을 지정하려면 다음을 수행할 수 있습니다.
#!/usr/bin/env python2.7
또는
#!/usr/bin/env python3.3