견고한 Python 응용 프로그램 작성의 측면
5285 단어 pythontutorialdevopsproductivity
개발자로서 우리는 낮에는 항상 시간이 부족하므로 현명한 결정을 내리고 아이디어를 코드로 전환할 때 시간을 효율적으로 사용해야 합니다. 일반적으로 불필요한 기능을 작성하는 데 시간을 낭비하지 않도록 처음에는 최소한의 실행 가능한 제품을 만드는 것이 좋은 전략입니다.
그럼에도 불구하고 최소한의 실행 가능한 제품이라도 사용자와 프로젝트에 참여하는 다른 개발자를 끌어들이기 위해 몇 가지 표준과 일치해야 합니다. 이 시리즈에서는 견고한 Python 응용 프로그램을 작성하는 여러 측면에 대해 설명하겠습니다. 우리는 작은 HTTP 클라이언트를 생성할 것이고, 따라서 우리는 다음을 할 것입니다:
sys
/argparse
를 사용하여 스크립트를 cli 앱으로 전환setup.py
파일 비교pytest
, tox
및 github actions
로 테스트 작성sphinx
를 사용하여 문서 생성PyPI
및 Anaconda
에서 앱 게시1. 간단한 스크립트 작성
먼저 GET 요청을 수행할 수 있는 간단한 스크립트를 만듭니다. 모든 스크립트를 MyScripts
폴더에 보관합니다. 그런 다음 프로젝트 폴더를 만들고 pipenv
를 사용하여 가상 환경을 만듭니다.
$ cd ~/MyScripts
$ mkdir tinyHTTPie
$ cd tinyHTTPie
$ pipenv --python 3.7
$ pipenv shell
그런 다음 프로젝트 파일을 만들고 종속성을 설치해야 합니다.
$ touch tihttp.py
$ pip install requests
스크립트를 작성해 봅시다. 응답의 헤더를 인쇄하고 싶습니다. OrderedDict
라이브러리에서 가져온 collections
개체를 사용하여 사전의 키를 정렬했습니다.
import requests
import collections
resp = requests.get('https://the-coding-lab.com/')
header = dict(collections.OrderedDict(resp.headers))
body = resp.text
for section in sorted(header.items()):
print(f"{section[0]}: {section[1]}")
스크립트를 실행하면...
$ python tihttp.py
...요청의 메타데이터가 성공적으로 반환되었습니다.
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Age: 124
Cache-Control: max-age=600
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 5764
Content-Type: text/html; charset=utf-8
Date: Tue, 16 Feb 2021 14:39:59 GMT
...
그러나 당신의 스크립트가 꽤 유용하다는 것을 깨달았을 때 "이 스크립트를 사용하기 쉬운 명령으로 어떻게 바꿀 수 있지?"라고 생각할 수 있습니다. 처음에는 스크립트 가상 환경을 영구적으로 고정하기 위해 shebang 라인을 추가해야 합니다. which python
명령 또는 pipenv --py
는 가상 환경의 Python 인터프리터에 대한 경로를 반환합니다. 그것은 다음과 같이 보일 것입니다:
/home/niklas/.local/share/virtualenvs/tinyHTTPie-iqhOkNUA/bin/python ~/tinyHTTPie/tihttp.py
이제 이 경로를 스크립트 헤드에 shebang 라인으로 추가해야 합니다. 명령줄에서 이 작업을 수행할 수 있습니다.
$ pybin=$(pipenv --py)
$ echo -e "#\!${pybin}\n\n$(cat tihttp.py)" > tihttp.py
파일 헤드는 다음과 같아야 합니다.
#!/home/niklas/.local/share/virtualenvs/tiny-HTTPie-iqhOkNUA/bin/python
import requests
...
스크립트를 실행 가능하게 하려면 권한을 부여해야 합니다. 그런 다음 스크립트에 대한 경로를 입력하면 지정된 Python 인터프리터에 의해 해석됩니다.
$ chmod +x tiny_HTTPie_clone.py
$ ./tihttp.py
경로에 별칭을 지정하면 도구를 더 쉽게 기억/사용할 수 있습니다. 모든 새 셸 세션에서 별칭을 사용할 수 있도록 .bashrc
파일(또는 별칭을 저장하는 모든 위치)에 별칭을 추가합니다.
$ echo "\nalias tihttp='~/MyScripts/tiny_HTTPie_clone.py'" >> ~/.bashrc
$ source ~/.bashrc
이제 파일 시스템의 위치에 관계없이 각각의 새 셸 세션에서 스크립트를 호출할 수 있습니다.
$ tihttp
그러나 여전히 문제가 있습니다. 도구가 웹사이트에 GET 요청을 보낼 때마다 파일을 열고 URL을 변경하고 저장하고 실행하여 URL을 변경해야 합니다. URL을 tihttp
명령에 인수로 추가하는 것이 좋지 않을까요? 표준 라이브러리의 Pythonsys
모듈이 여기에서 우리를 구출합니다!
Reference
이 문제에 관하여(견고한 Python 응용 프로그램 작성의 측면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/niklastiede/the-evolution-of-a-script-1-9-13c2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ cd ~/MyScripts
$ mkdir tinyHTTPie
$ cd tinyHTTPie
$ pipenv --python 3.7
$ pipenv shell
$ touch tihttp.py
$ pip install requests
import requests
import collections
resp = requests.get('https://the-coding-lab.com/')
header = dict(collections.OrderedDict(resp.headers))
body = resp.text
for section in sorted(header.items()):
print(f"{section[0]}: {section[1]}")
$ python tihttp.py
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Age: 124
Cache-Control: max-age=600
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 5764
Content-Type: text/html; charset=utf-8
Date: Tue, 16 Feb 2021 14:39:59 GMT
...
/home/niklas/.local/share/virtualenvs/tinyHTTPie-iqhOkNUA/bin/python ~/tinyHTTPie/tihttp.py
$ pybin=$(pipenv --py)
$ echo -e "#\!${pybin}\n\n$(cat tihttp.py)" > tihttp.py
#!/home/niklas/.local/share/virtualenvs/tiny-HTTPie-iqhOkNUA/bin/python
import requests
...
$ chmod +x tiny_HTTPie_clone.py
$ ./tihttp.py
$ echo "\nalias tihttp='~/MyScripts/tiny_HTTPie_clone.py'" >> ~/.bashrc
$ source ~/.bashrc
$ tihttp
Reference
이 문제에 관하여(견고한 Python 응용 프로그램 작성의 측면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/niklastiede/the-evolution-of-a-script-1-9-13c2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)