Python은 오랫동안 사실상의 표준 프로젝트 관리 및 구축 도구가 없었기 때문에 Python 프로젝트 구조와 구축 방법이 다양해졌습니다. 이는 Python의 자유 의지를 반영할 수 있습니다.
초기 수동 구축을 거친 Java와 달리 반자동 Ant, Maven을 거쳐 기본적으로 사실상의 표준입니다. 이 기간 동안 Maven은 다른 Gradle(주로 Android 프로젝트에서 추진), SBT(주로 Scala 프로젝트), Ant+Ivy, Buildr 등의 도전도 받아들였지만 세계에서 Maven의 위상을 흔들기는 어려웠으며, Maven의 디렉토리 레이아웃을 거의 따랐습니다.
Python에는 pip, Pipenv, conda와 같은 패키지 관리 도구가 있었지만 프로젝트의 디렉터리 레이아웃에 대한 합의가 없었습니다.
빌드의 많은 측면은 여전히 전통적인 Makefile 방법을 따르고, setup.py 및 build.py를 추가하여 프로그램 코드를 사용하여 설치하고 빌드합니다. 프로젝트 디렉토리 레이아웃과 관련하여 일부는 프로젝트 템플릿을 만든 다음 프로젝트 템플릿을 적용하는 도구를 만듭니다.
다음은 네 가지 도구의 사용에 대한 간략한 개요입니다.
- CookieCutter
- PyScaffold
- PyBuilder
- Poetry
CookieCutter 고전적인 Python 프로젝트 디렉터리 구조
$ pip install cookiecutter $ cookiecutter gh:audreyr/cookiecutter-pypackage # 以 github 上的 audreyr/cookiecutter-pypackage 为模板,再回答一堆的问题生成一个 Python 项目 ...... project_name [Python Boilerplate]: sample ......
최종 생성자: cookiecutter 프로젝트 템플릿은 다음과 같습니다.
$ tree sample sample ├── AUTHORS.rst ├── CONTRIBUTING.rst ├── HISTORY.rst ├── LICENSE ├── MANIFEST.in ├── Makefile ├── README.rst ├── docs │ ├── Makefile │ ├── authors.rst │ ├── conf.py │ ├── contributing.rst │ ├── history.rst │ ├── index.rst │ ├── installation.rst │ ├── make.bat │ ├── readme.rst │ └── usage.rst ├── requirements_dev.txt ├── sample │ ├── __init__.py │ ├── cli.py │ └── sample.py ├── setup.cfg ├── setup.py ├── tests │ ├── __init__.py │ └── test_sample.py └── tox.ini 3 directories, 26 files
이것은 아마도 현재 널리 사용되는 디렉터리 구조의 기본 프레임워크일 것입니다. 주요 요소는 다음과 같습니다.
$ tree sample sample ├── Makefile ├── README.rst ├── docs │ └── index.rst ├── requirements.txt ├── sample │ ├── __init__.py │ └── sample.py ├── setup.cfg ├── setup.py └── tests ├── __init__.py └── test_sample.py
프로젝트 샘플 디렉터리는 샘플 디렉터리에 반복됩니다. 및 테스트 파일은 테스트 디렉터리에 배치됩니다. 문서용 docs 디렉터리, README.rst 및 기타 설정용 setup.cfg 및 Makefile 파일을 추가합니다.
이것은 실제로 매우 고전적인 Python 프로젝트 구조입니다. 다음 빌드에서는 make 명령을 사용하고 Makefile 파일에 정의된 지침을 볼 수 있습니다.
$ make cleanremove all build, test, coverage and Python artifacts clean-buildremove build artifacts clean-pycremove Python file artifacts clean-test remove test and coverage artifacts lint check style test run tests quickly with the default Python test-all run tests on every Python version with tox coverage check code coverage quickly with the default Python docs generate Sphinx HTML documentation, including API docs servedocscompile the docs watching for changes releasepackage and upload a release dist builds source and wheel package installinstall the package to the active Python's site-packages
위 빌드 프로세스를 사용하려면 tox, Wheel, Coverage, sphinx, flake8 등 해당 패키지를 설치해야 하며 모두 pip를 통해 설치할 수 있습니다. 그런 다음 테스트하고, 보도하고, 문서를 만들고, dist를 만드는 등의 작업을 수행할 수 있습니다. 그 중 make docs는 아름다운 웹 문서를 생성할 수 있습니다.
PyScaffold 프로젝트 생성
PyScaffold 이름에서 알 수 있듯이 Python 프로젝트용 스캐폴딩을 만드는 데 사용되는 도구입니다. 설치 및 사용:
$ pip install pyscaffold $ putup sample
Python 프로젝트는 다음과 같은 방식으로 생성됩니다. 이전에 cookiecutter가 선택한 템플릿은 샘플 디렉터리 대신 src 디렉터리에 소스 파일을 저장한다는 것입니다.
$ tree sample sample ├── AUTHORS.rst ├── CHANGELOG.rst ├── CONTRIBUTING.rst ├── LICENSE.txt ├── README.rst ├── docs │ ├── Makefile │ ├── _static │ ├── authors.rst │ ├── changelog.rst │ ├── conf.py │ ├── contributing.rst │ ├── index.rst │ ├── license.rst │ ├── readme.rst │ └── requirements.txt ├── pyproject.toml ├── setup.cfg ├── setup.py ├── src │ └── sample │ ├── __init__.py │ └── skeleton.py ├── tests │ ├── conftest.py │ └── test_skeleton.py └── tox.ini
Tox는 전체 프로젝트를 빌드하는 데 사용되는 도구입니다. tox는 빌드 프로세스 중에 Python 가상 환경을 생성하여 테스트 및 빌드를 위한 깔끔한 환경을 허용하는 자동화된 테스트 및 빌드 도구입니다.
tox -av는 tox.ini에 정의된 모든 작업을 표시할 수 있습니다.
$ tox -av default environments: default -> Invoke pytest to run automated tests additional environments: build -> Build the package in isolation according to PEP517, see https://github.com/pypa/build clean -> Remove old distribution files and temporary build artifacts (./build and ./dist) docs-> Invoke sphinx-build to build the docs doctests-> Invoke sphinx-build to run doctests linkcheck -> Check for broken links in the documentation publish -> Publish the package you have been developing to a package index server. By default, it uses testpypi. If you really want to publish your package to be publicly accessible in PyPI, use the `-- --repository pypi` option.
tox -e 빌드, tox -e docs 등을 사용하여 실행할 명령을 사용하세요
tox 명령을 사용하는 동안 매번 각 단계가 느린 것 같습니다. 가상 머신을 만드는 데 시간이 좀 걸릴 것 같습니다.
PyBuilder
PyBuilder가 생성하는 디렉터리 구조는 Maven과 매우 유사합니다. 살펴보겠습니다.
$ pip install pybuilder $ mkdir sample && cd sample# 项目目录需手工创建 $ pyb --start-project# 回答一些问题后创建所需的目录和文件
완료 후 디렉터리 구조를 살펴보세요.
$ tree sample . ├── build.py ├── docs ├── pyproject.toml ├── setup.py └── src ├── main │ ├── python │ └── scripts └── unittest └── python
Building process pyb 명령을 계속 사용하면 pyb -h를 사용하여 도움말을 볼 수 있고 pyb -t를 사용하여 모든 작업을 나열할 수 있습니다. PyBuilder 작업은 플러그인 형식으로 추가되며 플러그인 구성은 빌드에 있습니다. py 파일.
$ pyb -t sample Tasks found for project "sample": analyze -Execute analysis plugins. depends on tasks: prepare run_unit_tests clean - Cleans the generated output. compile_sources - Compiles source files that need compilation. depends on tasks: prepare coverage - <no description available> depends on tasks: verify install - Installs the published project. depends on tasks: package publish(optional) package - Packages the application. Package a python application. depends on tasks: compile_sources run_unit_tests(optional) prepare - Prepares the project for building. Creates target VEnvs print_module_path - Print the module path. print_scripts_path - Print the script path. publish - Publishes the project. depends on tasks: package verify(optional) coverage(optional) run_integration_tests - Runs integration tests on the packaged application. depends on tasks: package run_unit_tests - Runs all unit tests. Runs unit tests based on Python's unittest module depends on tasks: compile_sources upload - Upload a project to PyPi. verify - Verifies the project and possibly integration tests. depends on tasks: run_integration_tests(optional) $ pyb run_unit_tests sample
PyBuilder는 빌드 또는 테스트 전에 가상 환경도 생성합니다. 버전 0.12.9부터는 --no-venvs 매개변수를 통해 가상 환경을 생성하는 단계를 건너뛸 수 있습니다. --no-venvs를 사용하면 Python 코드는 pyb를 실행하는 현재 Python 환경에서 실행되며 필요한 종속성을 수동으로 설치해야 합니다.
프로젝트의 종속성도 build.py 파일에 정의되어야 합니다.
@init def set_properties(project): project.depends_on('boto3', '>=1.18.52') project.build_depends_on('mock')
가상 환경을 생성하기 위해 pyb를 실행하면 위의 의존성이 설치되고, 그 안에서 테스트와 빌드가 실행됩니다.
Poetry
마지막 Poetry는 더 높은 프로젝트 활동을 갖춘 더 성숙한 Python 빌드라고 생각합니다. Poetry add boto3를 사용하여 종속성을 추가하고, poem show - -tree가 종속성 트리를 보여줍니다. . 프로젝트 설치 및 생성 방법을 살펴보세요
$ pip install poetry $ poetry new sample
생성하는 프로젝트는 위보다 간단합니다
$ tree sample sample ├── README.rst ├── pyproject.toml ├── sample │ └── __init__.py └── tests ├── __init__.py └── test_sample.py
--src 매개변수로 poem New를 주면 소스 파일 디렉토리 샘플이 src 디렉토리에 위치하게 됩니다 즉, Sample/src/ Sample.
poetry init는 현재 디렉터리에 pyproject.toml 파일을 생성하며, 디렉터리 생성은 수동으로 완료해야 합니다.
문서 생성, 코드 사양 확인 또는 코드 적용 범위에 중점을 두지 않습니다. 프로젝트 구성은 모두 pyproject.toml 파일에 더 중앙화되어 있습니다. toml이란 무엇입니까? Tom's Obvious, Minimal Language (https://github.com/toml-lang/toml) 구성 파일 형식입니다.
pyproject.toml은 시 추가, 시 설치 등 NodeJS의 package.json 파일과 다소 유사합니다. 명령줄
# 往 pyproject.toml 中添加对boto3 的依赖并安装(add 还能从本地或 git 来安装依赖 ), poetry add boto3 # 将依照 pyproject.toml 文件中定义安装相应的依赖到当前的 Python 虚拟环境中 # 比如在 <test-venv>/lib/python3.9/site-packages 目录中,安装好模块后也可让测试用例使用 poetry install
其他主要的
1.poetry build# 构建可安装的 *.whl 和 tar.gz 文件 2.poetry shell# 会根据定义在 pyproject.toml 文件中的依赖创建并使用虚拟环境 3.poetry run pytest# 运行使用 pytest 的测试用例,如 tests/test_sample.py 4.poetry run python -m unittest tests/sample_tests.py# 运行 unittest 测试用例 5.poetry export --without-hashes --output requirements.txt# 导出 requirements.txt 文件, --dev导出含 dev 的依赖,或者用 poetry export --without-hashes > requirements.txt
poetry run 能执行任何系统命令,只是它会在它要的虚拟环境中执行。所以可以想见,poetry 的项目要生成文档或覆盖率都必须用 poetry run ... 命令来支持 sphinx, coverage 或 flake8。
在 sample 目录(与 pyproject.toml 文件平级)中创建文件 my_module.py, 内容为
def main(): print('hello poetry')
然后在 pyproject.toml 中写上。
[tool.poetry.scripts] my-script="sample.my_module:main"
再执行
$ poetry run my-script
就会输出 "hello poetry"。
通过对以上四个工具的认识,项目结构的复杂度由 cookiecutter-pyproject -> PyScaffold -> PyBuilder -> Poetry 依次降低,使用的难度大略也是相同的顺序
위 내용은 4가지 Python 프로젝트 관리 및 구축 도구, 추천 모음!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
