他の章
実際のプロジェクト開発プロセスでは、オープンソース プロジェクトの標準化されたプロジェクトのパッケージ化および展開プロセスを利用して、ユーザーがダウンロードしてインストールできるようにプロジェクトをパブリック ウェアハウスに公開することができます。商用プロジェクトの場合、クラウド サーバー上にプライベート PyPi サーバーを確立して、オンライン公開を実現し、展開効率を向上させることができます。
Python プロジェクトのパッケージ化とデプロイメントのプロセス
- プロジェクトの作成と構成
- パッケージプロジェクト
- プロジェクトを PyPi またはプライベート リポジトリにアップロードします
- プロジェクトをダウンロードしてインストールする
プロジェクトリリースコンポーネント
パッケージ化後、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 アカウントの登録アドレス:
PyPI サーバーをプライベートにデプロイするには、pypiserver の公式ドキュメントを参照してください。