4가지 Python 프로젝트 관리 및 구축 도구, 추천 모음!
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PS "로드"문제는 자원 액세스 또는 처리 문제로 인한 것입니다. 하드 디스크 판독 속도는 느리거나 나쁘다 : CrystalDiskinfo를 사용하여 하드 디스크 건강을 확인하고 문제가있는 하드 디스크를 교체하십시오. 불충분 한 메모리 : 고해상도 이미지 및 복잡한 레이어 처리에 대한 PS의 요구를 충족시키기 위해 메모리 업그레이드 메모리. 그래픽 카드 드라이버는 구식 또는 손상됩니다. 운전자를 업데이트하여 PS와 그래픽 카드 간의 통신을 최적화하십시오. 파일 경로는 너무 길거나 파일 이름에는 특수 문자가 있습니다. 짧은 경로를 사용하고 특수 문자를 피하십시오. PS 자체 문제 : PS 설치 프로그램을 다시 설치하거나 수리하십시오.

부팅 할 때 "로드"에 PS가 붙어있는 여러 가지 이유로 인해 발생할 수 있습니다. 손상되거나 충돌하는 플러그인을 비활성화합니다. 손상된 구성 파일을 삭제하거나 바꾸십시오. 불충분 한 메모리를 피하기 위해 불필요한 프로그램을 닫거나 메모리를 업그레이드하십시오. 하드 드라이브 독서 속도를 높이기 위해 솔리드 스테이트 드라이브로 업그레이드하십시오. 손상된 시스템 파일 또는 설치 패키지 문제를 복구하기 위해 PS를 다시 설치합니다. 시작 오류 로그 분석의 시작 과정에서 오류 정보를 봅니다.

"로드"는 PS에서 파일을 열 때 말더듬이 발생합니다. 그 이유에는 너무 크거나 손상된 파일, 메모리 불충분, 하드 디스크 속도가 느리게, 그래픽 카드 드라이버 문제, PS 버전 또는 플러그인 충돌이 포함될 수 있습니다. 솔루션은 다음과 같습니다. 파일 크기 및 무결성 확인, 메모리 증가, 하드 디스크 업그레이드, 그래픽 카드 드라이버 업데이트, 의심스러운 플러그인 제거 또는 비활성화 및 PS를 다시 설치하십시오. 이 문제는 PS 성능 설정을 점차적으로 확인하고 잘 활용하고 우수한 파일 관리 습관을 개발함으로써 효과적으로 해결할 수 있습니다.

이 기사는 MySQL 데이터베이스의 작동을 소개합니다. 먼저 MySQLworkBench 또는 명령 줄 클라이언트와 같은 MySQL 클라이언트를 설치해야합니다. 1. MySQL-Uroot-P 명령을 사용하여 서버에 연결하고 루트 계정 암호로 로그인하십시오. 2. CreateABase를 사용하여 데이터베이스를 작성하고 데이터베이스를 선택하십시오. 3. CreateTable을 사용하여 테이블을 만들고 필드 및 데이터 유형을 정의하십시오. 4. InsertInto를 사용하여 데이터를 삽입하고 데이터를 쿼리하고 업데이트를 통해 데이터를 업데이트하고 DELETE를 통해 데이터를 삭제하십시오. 이러한 단계를 마스터하고 일반적인 문제를 처리하는 법을 배우고 데이터베이스 성능을 최적화하면 MySQL을 효율적으로 사용할 수 있습니다.

깃털 통제의 열쇠는 점진적인 성격을 이해하는 것입니다. PS 자체는 그라디언트 곡선을 직접 제어하는 옵션을 제공하지 않지만 여러 깃털, 일치하는 마스크 및 미세 선택으로 반경 및 구배 소프트를 유연하게 조정하여 자연스럽게 전이 효과를 달성 할 수 있습니다.

MySQL 성능 최적화는 설치 구성, 인덱싱 및 쿼리 최적화, 모니터링 및 튜닝의 세 가지 측면에서 시작해야합니다. 1. 설치 후 innodb_buffer_pool_size 매개 변수와 같은 서버 구성에 따라 my.cnf 파일을 조정해야합니다. 2. 과도한 인덱스를 피하기 위해 적절한 색인을 작성하고 Execution 명령을 사용하여 실행 계획을 분석하는 것과 같은 쿼리 문을 최적화합니다. 3. MySQL의 자체 모니터링 도구 (showprocesslist, showstatus)를 사용하여 데이터베이스 건강을 모니터링하고 정기적으로 백업 및 데이터베이스를 구성하십시오. 이러한 단계를 지속적으로 최적화함으로써 MySQL 데이터베이스의 성능을 향상시킬 수 있습니다.

PS 카드의로드 인터페이스는 소프트웨어 자체 (파일 손상 또는 플러그인 충돌), 시스템 환경 (DIFE 드라이버 또는 시스템 파일 손상) 또는 하드웨어 (하드 디스크 손상 또는 메모리 스틱 고장)로 인해 발생할 수 있습니다. 먼저 컴퓨터 자원이 충분한 지 확인하고 배경 프로그램을 닫고 메모리 및 CPU 리소스를 릴리스하십시오. PS 설치를 수정하거나 플러그인의 호환성 문제를 확인하십시오. PS 버전을 업데이트하거나 폴백합니다. 그래픽 카드 드라이버를 확인하고 업데이트하고 시스템 파일 확인을 실행하십시오. 위의 문제를 해결하면 하드 디스크 감지 및 메모리 테스트를 시도 할 수 있습니다.

MySQL에는 무료 커뮤니티 버전과 유료 엔터프라이즈 버전이 있습니다. 커뮤니티 버전은 무료로 사용 및 수정할 수 있지만 지원은 제한되어 있으며 안정성이 낮은 응용 프로그램에 적합하며 기술 기능이 강합니다. Enterprise Edition은 안정적이고 신뢰할 수있는 고성능 데이터베이스가 필요하고 지원 비용을 기꺼이 지불하는 응용 프로그램에 대한 포괄적 인 상업적 지원을 제공합니다. 버전을 선택할 때 고려 된 요소에는 응용 프로그램 중요도, 예산 책정 및 기술 기술이 포함됩니다. 완벽한 옵션은없고 가장 적합한 옵션 만 있으므로 특정 상황에 따라 신중하게 선택해야합니다.
