Python은 모든 유형의 실행을 지원합니다. Python 코드를 셸에서 직접 실행하거나 코드를 파일에 저장하고 나중에 실행할 수 있습니다.
때로는 새로운 Python 프로젝트를 시작하는 것이 매우 어렵습니다. 스크립트를 작성하시겠습니까? 모듈을 작성하시겠습니까? 패키지를 작성하시겠습니까?
가장 좋은 선택은 마이크로피시 패턴입니다. 스크립트를 작성하고 모듈에서 다시 작성하고 패키지에서 다시 작성하세요.
이 패턴을 사용하면 매일 바퀴를 다시 만들 필요가 없으며 나중에 코드를 재사용할 수 있습니다.
Python 패키지의 구조는 다음과 같습니다.
pkg ├── __init__.py ├── module1.py └── subpkg ├── __init__.py ├── __main__.py └── module2.py
pkg 폴더는 __init__.py 모듈을 포함하므로 패키지입니다. 또한 폴더 subpkg는 패키지입니다. pkg의 하위 패키지입니다.
module1.py와 module2.py는 해당 패키지의 모듈입니다.
__main__.py 모듈은 패키지 실행을 허용합니다.
Python 개발자가 된다면 다른 일반적인 도구를 사용하게 됩니다.
순서대로 작성하는 모든 코드는 다음 단계를 따릅니다.
코드를 변경할 때마다 버그가 발생할 수 있습니다. 이를 폐기하려면 올바른 환경에서 자체 패키지를 테스트해야 할 때마다.
이를 위해서는 Python 자체 외에 git, docker, make와 같은 일부 도구가 필요합니다.
단순히 Python 패키지를 만들어 모든 사람이 즉시 사용할 수 있도록 하는 것만으로는 충분하지 않습니다. 또한 이를 문서화하는 방법, 다른 사람에게 간략하게 설명하는 방법, 라이센스를 부여하고 프로젝트에 통합하는 방법을 설명하는 방법도 생각해야 합니다.
이를 위해서는 README, LICENSE, CODE_OF_CONDUCT 및 CONTRIBUTING과 같은 파일 개발이 필요합니다.
CHANGELOG를 추가하여 각 버전의 변경 사항을 다른 사람들이 추적하도록 할 수도 있습니다.
Python 프로젝트의 모든 부분을 구현하려면 몇 시간 또는 며칠이 소요됩니다.
하지만 이 목적을 위한 도구가 있습니다: psp.
설치 지침을 따른 후:
[test@ubuntu ~] sudo apt install -y python3 python3-pip git curl [test@ubuntu ~] curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.1.0/psp.deb -o psp.deb [test@ubuntu ~] sudo dpkg -i psp.deb
실행:
[test@ubuntu ~] psp Welcome to PSP (Python Scaffolding Projects): 0.1.0 > Name of Python project: app > Do you want to create a virtual environment? Yes > Do you want to start git repository? Yes > Select git remote provider: Gitlab > Username of Gitlab: test_user > Do you want unit test files? Yes > Install dependencies: flask > Select documention generator: MKDocs > Do you want to configure tox? Yes > Select remote CI provider: CircleCI > Do you want create common files? Yes > Select license: Gnu Public License > Do you want to install dependencies to publish on pypi? Yes > Do you want to create a Dockerfile and Containerfile? Yes Python project `app` created at app
이제 생성된 Python 프로젝트를 확인하세요.
[test@ubuntu ~] ls -lah app total 88K drwxrwxr-x 9 test test 440 Dec 20 14:48 . drwxrwxrwt 29 root root 680 Dec 20 14:49 .. drwxrwxr-x 2 test test 60 Dec 20 14:47 .circleci drwxrwxr-x 7 test test 200 Dec 20 14:47 .git -rw-rw-r-- 1 test test 381 Dec 20 14:47 .gitignore drwxrwxr-x 4 test test 80 Dec 20 14:47 .gitlab -rw-rw-r-- 1 test test 127 Dec 20 14:48 CHANGES.md -rw-rw-r-- 1 test test 5.4K Dec 20 14:48 CODE_OF_CONDUCT.md -rw-rw-r-- 1 test test 1.1K Dec 20 14:48 CONTRIBUTING.md -rw-rw-r-- 1 test test 190 Dec 20 14:48 Containerfile -rw-rw-r-- 1 test test 190 Dec 20 14:48 Dockerfile -rw-rw-r-- 1 test test 35K Dec 20 14:48 LICENSE.md -rw-rw-r-- 1 test test 697 Dec 20 14:48 Makefile -rw-rw-r-- 1 test test 177 Dec 20 14:48 README.md drwxrwxr-x 2 test test 60 Dec 20 14:47 docs -rw-rw-r-- 1 test test 19 Dec 20 14:47 mkdocs.yml -rw-rw-r-- 1 test test 819 Dec 20 14:48 pyproject.toml -rw-rw-r-- 1 test test 66 Dec 20 14:47 requirements.txt drwxrwxr-x 2 test test 80 Dec 20 14:47 tests -rw-rw-r-- 1 test test 213 Dec 20 14:47 tox.ini drwxrwxr-x 2 test test 80 Dec 20 14:46 app drwxrwxr-x 5 test test 140 Dec 20 14:46 venv
우리 프로젝트를 위해 psp 명령이 생성한 패키지 개발을 시작하세요.
[test@ubuntu ~] cd app/ && ls -lh app/ total 8.0K -rw-rw-r-- 1 test test 162 Dec 20 14:46 __init__.py -rw-rw-r-- 1 test test 204 Dec 20 14:46 __main__.py [test@ubuntu ~] vim app/core.py
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Wow, this is my app!</p>"
이제 hello_world 함수를 __main__.py 파일로 가져옵니다.
pkg ├── __init__.py ├── module1.py └── subpkg ├── __init__.py ├── __main__.py └── module2.py
[test@ubuntu ~] sudo apt install -y python3 python3-pip git curl [test@ubuntu ~] curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.1.0/psp.deb -o psp.deb [test@ubuntu ~] sudo dpkg -i psp.deb
제작 및 배포 준비가 완료된 간단하지만 체계적이고 강력한 패키지를 작성하셨습니다.
패키지를 테스트해 보세요.
[test@ubuntu ~] psp Welcome to PSP (Python Scaffolding Projects): 0.1.0 > Name of Python project: app > Do you want to create a virtual environment? Yes > Do you want to start git repository? Yes > Select git remote provider: Gitlab > Username of Gitlab: test_user > Do you want unit test files? Yes > Install dependencies: flask > Select documention generator: MKDocs > Do you want to configure tox? Yes > Select remote CI provider: CircleCI > Do you want create common files? Yes > Select license: Gnu Public License > Do you want to install dependencies to publish on pypi? Yes > Do you want to create a Dockerfile and Containerfile? Yes Python project `app` created at app
결과는 다음과 같습니다.
이제 테스트 폴더를 통해 패키지의 Python 코드도 테스트합니다.
[test@ubuntu ~] ls -lah app total 88K drwxrwxr-x 9 test test 440 Dec 20 14:48 . drwxrwxrwt 29 root root 680 Dec 20 14:49 .. drwxrwxr-x 2 test test 60 Dec 20 14:47 .circleci drwxrwxr-x 7 test test 200 Dec 20 14:47 .git -rw-rw-r-- 1 test test 381 Dec 20 14:47 .gitignore drwxrwxr-x 4 test test 80 Dec 20 14:47 .gitlab -rw-rw-r-- 1 test test 127 Dec 20 14:48 CHANGES.md -rw-rw-r-- 1 test test 5.4K Dec 20 14:48 CODE_OF_CONDUCT.md -rw-rw-r-- 1 test test 1.1K Dec 20 14:48 CONTRIBUTING.md -rw-rw-r-- 1 test test 190 Dec 20 14:48 Containerfile -rw-rw-r-- 1 test test 190 Dec 20 14:48 Dockerfile -rw-rw-r-- 1 test test 35K Dec 20 14:48 LICENSE.md -rw-rw-r-- 1 test test 697 Dec 20 14:48 Makefile -rw-rw-r-- 1 test test 177 Dec 20 14:48 README.md drwxrwxr-x 2 test test 60 Dec 20 14:47 docs -rw-rw-r-- 1 test test 19 Dec 20 14:47 mkdocs.yml -rw-rw-r-- 1 test test 819 Dec 20 14:48 pyproject.toml -rw-rw-r-- 1 test test 66 Dec 20 14:47 requirements.txt drwxrwxr-x 2 test test 80 Dec 20 14:47 tests -rw-rw-r-- 1 test test 213 Dec 20 14:47 tox.ini drwxrwxr-x 2 test test 80 Dec 20 14:46 app drwxrwxr-x 5 test test 140 Dec 20 14:46 venv
이제 웹 앱 개발을 저장할 수 있습니다.
[test@ubuntu ~] cd app/ && ls -lh app/ total 8.0K -rw-rw-r-- 1 test test 162 Dec 20 14:46 __init__.py -rw-rw-r-- 1 test test 204 Dec 20 14:46 __main__.py [test@ubuntu ~] vim app/core.py
Docker를 사용하여 프로덕션 환경을 시뮬레이션합니다.
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Wow, this is my app!</p>"
결과는 같습니다.
이제 다음 개발 후에는 Makefile과 함께 파이프라인을 사용할 수 있습니다.
[test@ubuntu app] vim app/__main__.py
이제 원한다면 PyPi에 Python 패키지를 게시할 준비가 되었습니다.
#! /usr/bin/env python3 # -*- encoding: utf-8 -*- # vim: se ts=4 et syn=python: # Generated by psp (https://github.com/MatteoGuadrini/psp) from .__init__ import __version__ print(f'app {__version__}') from .core import app app.run(debug=True)
5분도 안 되어 패키지 개발만 걱정하면 되는 Python 프로젝트를 만들었습니다.
이 기사에 사용된 도구:
psp: 저장소 -- 문서
git: 저장소 -- 문서
docker: 저장소 -- 문서
make: 저장소 -- 문서
Python: 저장소 -- 문서
위 내용은 inutes에서 자신의 Python 프로젝트를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!