Python 스크립트 헤더
일반적인 헤더는
#!/usr/bin/env python
하지만 다음과 같은 스크립트를 실행할 때도 작동합니다. $python ./my_script.py
#!/usr/bin/python
#!python
이 두 헤더의 차이점은 무엇입니까? 두 번째 문제는 무엇일까요? 파이썬 인터프리터가 PATH에 있는지 여부에 대해서도 논의하십시오. 감사.
먼저 인터프리터를 사용하여 스크립트를 명시 적으로 실행할 때마다
$ python ./my_script.py
$ ksh ~/bin/redouble.sh
$ lua5.1 /usr/local/bin/osbf3
#!
라인은 항상 무시됩니다. 이 #!
행은 실행 가능한 스크립트 의 Unix 기능이며 .NET 의 매뉴얼 페이지execve(2)
에서 전체 문서를 볼 수 있습니다 . 다음 단어 #!
는 유효한 실행 파일의 경로 이름이어야합니다. 그래서
#!/usr/bin/env python
python
사용자에있는 모든 것을 실행 합니다 $PATH
. 이 형식은 이동되는 Python 인터프리터에 탄력적이므로 다소 이식성이 높지만 사용자가 .NET Framework에 추가하여 표준 Python 인터프리터를 재정의 할 수 있습니다 $PATH
. 목표에 따라이 동작은 정상일 수도 있고 그렇지 않을 수도 있습니다.
다음,
#!/usr/bin/python
파이썬 인터프리터가 /usr/bin
. 다른 곳에 설치하면 잃게됩니다. 그러나 이것은 당신이 원하는 버전을 정확히 얻거나 전혀 ( "fail-stop"동작) 아무것도 얻지 못하도록하는 좋은 방법입니다.
#!/usr/bin/python2.5
드디어,
#!python
python
스크립트가 실행될 때 현재 디렉토리에 실행 파일 이있는 경우에만 작동 합니다. 권장하지 않습니다.
스크립트 시작 부분에 3 가지를 제안합니다.
첫째, 이미 말했듯이 사용 환경 :
#!/usr/bin/env python
둘째, 인코딩을 설정하십시오.
# -*- coding: utf-8 -*-
셋째, 문서 문자열을 설정합니다.
"""This is a awesome
python script!"""
그리고 확실히 나는 " "
ident에 (4 공백)을 사용할 것 입니다.
최종 헤더는 다음과 같습니다.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""This is a awesome
python script!"""
최고의 소원과 행복한 코딩.
Python 실행 파일은 / usr / bin이 아닌 다른 위치에 설치 될 수 있지만 env
거의 항상 해당 위치에 있으므로 사용 /usr/bin/env
이 더 이식 가능합니다.
env
(GNU coreutils 6.10) 맨 페이지에서 :
env - run a program in a modified environment
이론적으로 env
는 환경을 재설정 (기존 환경 변수 대부분 제거)하거나 스크립트 헤더에 추가 환경 변수를 추가 하는 데 사용할 수 있습니다 . 실제로 언급 한 두 버전은 동일합니다. (다른 사람들이 좋은 점을 언급했지만 python
통과를 지정 env
하면 python
경로를 모르고 추상적으로 지정할 수 있습니다 .)
예, 있습니다-파이썬은에 없을 수 /usr/bin
있지만 예를 들어 /usr/local/bin
(BSD)에 있습니다.
virtualenv를 사용할 때 다음과 같을 수도 있습니다. ~/projects/env/bin/python
The /usr/bin/env python
becomes very useful when your scripts depend on environment settings for example using scripts which rely on python virtualenv
. Each virtualenv has its own version of python binary which is required for adding packages installed in virtualenv to python path (without touching PYTHONPATH env).
As more and more people have started to used virtualenv for python development prefer to use /usr/bin/env python
unless you don't want people to use their custom python binary.
Note: You should also understand that there are potential security issues (in multiuser environments) when you let people run your scripts in their custom environments. You can get some ideas from here.
참고URL : https://stackoverflow.com/questions/3128669/python-script-header
'developer tip' 카테고리의 다른 글
RuntimeException을 발생시키는 메소드가 메소드 서명에 표시해야합니까? (0) | 2020.10.24 |
---|---|
최고의 필수 hg / 수은 확장은 무엇입니까? (0) | 2020.10.24 |
Bash CTRL을 사용하여 단어 / 문자열간에 커서 이동 (0) | 2020.10.24 |
java.security.InvalidAlgorithmParameterException : Linux에서 trustAnchors 매개 변수가 비어 있지 않아야합니다. 또는 기본 신뢰 저장소가 비어있는 이유 (0) | 2020.10.23 |
Eclipse 제공 오류, 최근 업데이트 후 R.java 파일 누락 (0) | 2020.10.23 |