Pythonプロジェクトのパッケージ化とデプロイメント(3):パッケージ化とデプロイメントの実際の作業プロセス

他の章

実際のプロジェクト開発プロセスでは、オープンソース プロジェクトの標準化されたプロジェクトのパッケージ化および展開プロセスを利用して、ユーザーがダウンロードしてインストールできるようにプロジェクトをパブリック ウェアハウスに公開することができます。商用プロジェクトの場合、クラウド サーバー上にプライベート PyPi サーバーを確立して、オンライン公開を実現し、展開効率を向上させることができます。

Python プロジェクトのパッケージ化とデプロイメントのプロセス

  1. プロジェクトの作成と構成
  2. パッケージプロジェクト
  3. プロジェクトを PyPi またはプライベート リポジトリにアップロードします
  4. プロジェクトをダウンロードしてインストールする

プロジェクトリリースコンポーネント

ここに画像の説明を挿入します
パッケージ化後、2 つの主要な公開コンポーネント (アーティフェクト) が生成されます。

  • ソース ファイル パッケージ: Python ソース ファイル (sdist と略称)。.py、リソース ファイル、データ ファイルなどが含まれます。
  • バイナリ パッケージ(コンパイルされたバイナリ形式、通常はホイール形式) は、Python 以外のサードパーティ ライブラリとマージしてパッケージ化することもできます。インストーラーは pip です。

Python バイナリ パッケージには Wheel と Egg の 2 つの形式があります。Egg 形式は 2004 年に setuptools によって導入され、Wheel 形式は 2012 年の PEP 427 で導入されました。Wheelは現在、Python の組み込みパッケージおよびバイナリ パッケージの標準とみなされています。

3. パッケージングツールの紹介

最も古い Python パッケージング ツールはdistutilsで、これをsetup.py構成ファイルとして使用します。後にsetuptoolssetup.pyツールに置き換えられ、構成ファイルは pyproject.toml ですが、構成ファイルとしても使用できます。
その他のパッケージ化ツールには次のものがあります。 詩ツール。ピペンブ、PDM

setuptoolsのパッケージ化手順
ここに画像の説明を挿入します

4. 梱包手順の詳細説明

この記事では、公式に推奨されているパッケージング ツールsetuptools,構成ファイルを使用しますpyproject.toml

1) setuptoolsをインストールする

インストールコマンド

pip install --upgrade setuptools

ビルドモジュールを更新する

pip install --upgrade build

2) 基本的な使い方

1 を作成しpyproject.toml、build-system セクション構成を追加します

[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

通常、セクション構成セクション、メタデータ、コンテンツ、依存関係などをさらに追加する必要があります。これらのコンテンツはファイルに含めることもできますsetup.cfg

pyproject.toml など

[project]
name = "mypackage"
version = "0.0.1"
dependencies = [
    "requests",
    'importlib-metadata; python_version<"3.8"',
]

セットアップ.cfg

[metadata]
name = mypackage
version = 0.0.1

[options]
install_requires =
    requests
    importlib-metadata; python_version < "3.8"

3) プロジェクト構造の整理

プロジェクト ファイルは次のように編成できます。

mypackage
├── pyproject.toml  
|   README.rst or README.md 
|   # LICENCE (properly chosen license information, e.g. MIT, BSD-3, GPL-3, MPL-2, etc...)
└── mypackage
    ├── __init__.py
    └── ... (other Python files)

4) プロジェクトをコンパイルする

pyproject.toml ディレクトリで、パッケージ化コマンドを実行します。

py -m build

このコマンドは、パッケージのサブディレクトリを自動的に検索し、sdist および Wheel アーティファクトを生成します。

dist/
├── example_package_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl
└── example_package_YOUR_USERNAME_HERE-0.0.1.tar.gz

その中には、*.tar.gz はソース ファイル パッケージ、.whl はビルドされたディストリビューション、つまりコンパイルされたバイナリ パッケージです。インストール中、pip は最初に Wheel パッケージをインストールします。

ソース ファイル ディレクトリを指定し、sdist パッケージのみを生成します

python -m build --sdist source-directory

商用プロジェクトの場合、ソース コードをリリースする必要がない場合は、wheel パッケージのみを生成できます。

python3 -m build --wheel source-tree-directory

5) パッケージを PyPi にアップロードします

同じアカウントを登録するには

テストアカウントのアドレス: https://test.pypi.org/account/register/

ファイルをアップロードするにはトークンも必要です。

プロジェクトを安全にアップロードするには、PyPiI API トークンが必要です。https://test.pypi.org/manage/account/#api-tokens で作成できます。「スコープ」を「Entie Account」に設定します。トークンをコピーして保存する前にページを閉じないでください。そうしないと、トークンが閉じられてしまいます。動作しません。トークンが再び表示されます

ファイルをアップロードするツールはtwine インストールコマンドは以下の通り

py -m pip install --upgrade twine

dist サブディレクトリで実行してすべてのファイルをアップロードします

py -m twine upload --repository testpypi dist/*

上記のコマンドを実行すると、ユーザー名とパスワードの入力を求められます。ユーザー名を使用します。__token__パスワードには、pypi-プレフィックスを含むトークン値を使用します。

D:\workplace\python\guangda>python -m twine upload --repository testpypi dist/*
Uploading distributions to https://test.pypi.org/legacy/
Enter your username: peter
Enter your password:
Uploading face_push-0.0.1-py3-none-any.whl
100% ---------------------------------------- 18.6/18.6 kB • 00:00 • ?
Uploading face_push-0.0.1.tar.gz
100% ---------------------------------------- 17.5/17.5 kB • 00:00 • ?

View at:
https://test.pypi.org/project/face-push/0.0.1/

アップロードが完了したら、確認してください

https://test.pypi.org/project/example_package

5. プロジェクトをダウンロードしてインストールする

検証のために新しい仮想環境を追加することをお勧めします。インストールが成功したかどうかを確認する

py -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-package

py -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-package-YOUR-USERNAME-HERE

テストには TestPyPI が使用されることに注意してください。

インストールが完了したら、テスト用にパッケージをインポートします

from example_package import example
example.add_one(2)

慣れてきたら、公式 PyPI アカウントの登録アドレス:

https://pypi.org

PyPI サーバーをプライベートにデプロイするには、pypiserver の公式ドキュメントを参照してください。

おすすめ

転載: blog.csdn.net/captain5339/article/details/132657196