명령줄에서 sudo를 사용하여 Python 스크립트를 실행할 수 없습니다.

명령줄에서 sudo를 사용하여 Python 스크립트를 실행할 수 없습니다.

Centos 7 가상 머신이 있고 Python 스크립트에서 특정 셸 명령을 실행하려면 sudo 권한이 필요합니다. #!/usr/bin/env python3.7내 스크립트 상단에 하나가 있는데 실행하면 오류가 sudo ./script.py발생합니다 . /usr/bin/env: python3.7: No such file or directory내 코드를 sudo로 어떻게 실행하나요? 명확히 하기 위해 간단히 입력하면 실행되지만 ./script.py스크립트 permission denied가 3개의 특정 명령을 실행하려고 하면 하나를 얻게 되므로 sudo가 필요합니다.

echo $PATH결과:

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/centos/.local/bin:/home/centos/bin:/home/centos/.local/bin:home/centos/bin

sudo echo $PATH위와 동일한 결과를 제공합니다.

type python3.7나에게주세요: python3.7 is /usr/local/bin/python3.7

답변1

문제가 많다

#!/usr/bin/env python3.7

첫 번째는 python3.7스크립트를 실행하는 사용자의 경로에 있어야 한다는 것입니다. 분명히 이것은 루트 사용자에게는 해당되지 않습니다.

두 번째는 python3.7PATH에서 첫 번째 것을 실행한다는 것입니다. 버전 3.7을 명시적으로 요청할 때 이는 큰 문제가 아닐 수 있지만 #!/usr/bin/env python필수 2 대신 3을 실행하는 -s를 많이 만났습니다 .

그렇기 때문에 사용을 권장하지 않습니다 #!/usr/bin/env.

문제에 대한 3가지 해결책이 있습니다:

  • 루트의 PATH에 넣으세요 /usr/local/bin/(권장되지 않습니다 local. 기본적으로 PATH에 없기 때문입니다).
  • #!/usr/local/bin/python3.7스크립트에서 사용하세요. Python이 아닌 다른 시스템에서 사용하는 경우 깨질 수 있습니다./usr/bin
  • python에 있는 Python의 기본 설치를 사용하십시오 . 전복 대신 /usr/bin이를 사용하는 것이 좋습니다 .#!/usr/bin/python3

관련 정보