Pythonのプロジェクト管理・構築ツール4選、おすすめまとめ!
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 を追加してプログラム コードを使用してインストールとビルドを行います。プロジェクト ディレクトリのレイアウトに関しては、プロジェクト テンプレートを作成し、そのプロジェクト テンプレートを適用するツールを作成する人もいます。
以下は 4 つのツールの使用の概要です
- 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
プロジェクトのサンプル ディレクトリに繰り返します。ソース ファイルをサンプル ディレクトリに配置し、Python ソース ファイルをテスト ディレクトリに配置します。これはテスト ファイル、ドキュメント用の docs ディレクトリ、README.rst、その他のセットアップ ファイル、setup.cfg およびビルド用の Makefile ファイルです。
これは実際には非常に古典的な Python プロジェクト構造です。次のビルドでは make コマンドが使用されます。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は美しいWebドキュメントを生成することができます。
PyScaffold プロジェクトの作成
PyScaffold 名前が示すように、Python プロジェクトのスキャフォールディングを作成するために使用されるツールです。インストールして使用します:
$ pip install pyscaffold $ putup sample
このように作成します。Python プロジェクトを作成しました。ディレクトリ構造は、ソース ファイルがサンプル ディレクトリではなく src ディレクトリに配置されることを除いて、cookiecutter で選択されたテンプレートと似ています。
$ 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 build、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
ビルド プロセスでは引き続き pyb コマンドが使用されます。ヘルプを表示するには pyb -h を使用し、すべてのタスクを一覧表示するには pyb -t を使用できます。 PyBuilder のプラグインの形式は、プラグインの構成が build.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 を使用して、依存関係、poetry を追加します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 パラメータを指定すると、ソース ファイル ディレクトリのサンプルが作成されますsrc ディレクトリ、つまり、sample/src/sample に配置されます。
poetry init は、現在のディレクトリに pyproject.toml ファイルを生成します。ディレクトリの生成は手動で完了する必要があります。
ドキュメントの生成、コード仕様のチェック、コード カバレッジには焦点を当てていません。そのプロジェクト構成はより集中化されており、すべて pyproject.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 依次降低,使用的难度大略也是相同的顺序
以上がPythonのプロジェクト管理・構築ツール4選、おすすめまとめ!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









hadidb:軽量で高レベルのスケーラブルなPythonデータベースHadIDB(HadIDB)は、Pythonで記述された軽量データベースで、スケーラビリティが高くなっています。 PIPインストールを使用してHADIDBをインストールする:PIPINSTALLHADIDBユーザー管理CREATEユーザー:CREATEUSER()メソッド新しいユーザーを作成します。 Authentication()メソッドは、ユーザーのIDを認証します。 fromhadidb.operationimportuseruser_obj = user( "admin"、 "admin")user_obj。

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

データの専門家として、さまざまなソースから大量のデータを処理する必要があります。これは、データ管理と分析に課題をもたらす可能性があります。幸いなことに、AWS GlueとAmazon Athenaの2つのAWSサービスが役立ちます。

いいえ、MySQLはSQL Serverに直接接続できません。ただし、次のメソッドを使用してデータ相互作用を実装できます。ミドルウェア:MySQLから中間形式にデータをエクスポートしてから、ミドルウェアを介してSQL Serverにインポートします。データベースリンカーの使用:ビジネスツールは、よりフレンドリーなインターフェイスと高度な機能を提供しますが、本質的にはミドルウェアを通じて実装されています。

Redisサーバーを起動する手順には、以下が含まれます。オペレーティングシステムに従ってRedisをインストールします。 Redis-Server(Linux/Macos)またはRedis-Server.exe(Windows)を介してRedisサービスを開始します。 Redis-Cli ping(Linux/macos)またはRedis-Cli.exePing(Windows)コマンドを使用して、サービスステータスを確認します。 Redis-Cli、Python、node.jsなどのRedisクライアントを使用して、サーバーにアクセスします。
