Unix 환경에서 Python API를 개발하기 위한 기본 단계

Unix 환경에서 Python API를 개발하기 위한 기본 단계

Unix 환경에서 가상 머신용 API를 개발 중입니다. 대부분의 모듈은 Python으로 개발됩니다. 이에 대해 몇 가지 질문이 있습니다.

내 파일 확장자는 abc.py.이며 이를 명령으로 사용하고 싶습니다. 예를 들어 virtman dominfo [vmid]명령 구문이어야 합니다. 이제 ./virtman.py dominfo [vmid]이 일이 일어나도록 주어야 합니다 . #!/usr/bin/python파이썬 파일의 첫 번째 줄이 있습니다 . 그럼 어떻게 명령을 내리나요?

내 에코 $PATH는 '/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin0'과 같습니다.

많은 기사를 읽었지만 명확하게 이해하지 못했기 때문에 어떤 팁이나 제안이라도 도움이 될 것입니다.

답변1

오해하신 것 같습니다. 이것은 abc.py명령이 아닙니다. 실행할 수 있다면 이름에 점이 있는 프로그램일 뿐입니다. 실행할 수 있다는 의미에서 실행 ./abc.py하므로 실행 비트를 설정해야 합니다. 만약 너라면가지다당신이하는 일은 python abc.py명령이 아닙니다.

일반적으로 일반 Python 파일을 abc.py실행 가능하게 만들려면 첫 번째 줄이 다음과 같은지 확인해야 합니다.

#!/usr/bin/env python

(이는 /usr/bin/env프로그램이 있고 python에 있는 명령을 찾을 것이라고 가정합니다 /usr/local/bin. 또한 기본값 python(일반적으로 와 같은 특정 Python 버전에 대한 링크 )을 실행한다고 가정합니다 . 이것이 명령으로 작동하는 경우에도 python2.7사용할 수 있습니다. python3사용).

나중에 해라

chmod +x abc.py
mv abc.py abc

그런 다음 실행할 수 있습니다 ./abc. 현재 디렉터리가 경로에 있거나 abc경로의 디렉터리로 이동하면 abc어디에서나 실행할 수 있어야 합니다.

그러나 파일 이름 바꾸기 및 이동에는 단점도 있습니다.

  • from abc import SomeClass파일 이름이 변경되었으므로 더 이상 이 작업을 수행할 수 없습니다.
  • 파일이 개정 관리 대상인 경우 더 이상 개정 관리가 불가능할 수 있습니다.

그래서 제가 보통 하는 일은 /usr/local/bin/abc다음과 같은 새 파일을 만드는 것입니다.

#!/usr/bin/env python

from abc import main
main()

그리고 하단에 abc.py:

def main():
    doing the real stuff

if __name__ == '__main__':
    main()

Python이 모듈을 검색하려면 디렉터리가 abc.pyPATH에 있어야 하지만 이렇게 하면 변경할 필요가 없고 모든 프로그램에서 가져오기로 사용할 수 있으며 python abc.py.

1 명령어 이름에서 점(.)을 제거해야 하지만 꼭 필요한 것은 아닙니다. 이름을 바꾸지 않고도 호출할 수 있습니다 .mv./abc.py

답변2

Anthon의 답변은 정확하지만 심각한 Python 프로젝트의 경우 살펴봐야 합니다.왜곡하다표준 라이브러리의 모듈. 그것은디자인됨Python 모듈과 실행 파일을 시스템에 "올바른 방법"으로 배포하고 다음을 수행하세요.

  • 이 모듈은 표준 라이브러리에 있고 가장 잘 알려진 Python 패키지(Django, NumPy, Celery 등)에서 사용되므로 Python 개발자는 이 모듈에 익숙하거나 익숙해야 합니다. 신규 사용자는 프로젝트를 배포하는 방법을 즉시 알게 될 것입니다.

  • 프로젝트의 파일과 패키지가 정의되면 간단히 실행하여 python setup.py install시스템에 패키지를 배포하고 업데이트하세요.

    더 이상 PATH변수를 수동으로 업데이트하거나, 파일을 복사 /usr/local/bin하거나, 실행 가능하게 만들 필요 없이 모두 처리됩니다!

  • pip install -e를 사용하여 개발 모드에서 패키지를 설치할 수 있습니다 .

  • 또한 Windows 또는 OSX 환경에서도 어느 정도 이식 가능합니다.

또한 다음과 같은 매개변수 파서를 사용하는 것은 충분히 권장할 수 없습니다.인수 구문 분석 중명령줄 도구를 디자인하는 경우에는 이것으로 충분합니다.

관련 정보