python_package_index_pypi_に自作パッケージを登録する方法
                目次
前提条件
PyPIにアカウントを作成している事が必要
未作成の場合はPyPIのアカウント登録のやり方を参照
このパッケージを登録したときの情報
nLoggong https://pypi.org/project/nlogging/
事前準備
まずは以下のような構成で各種ファイルを配置する
ソースコード等はgithubで公開しているのでそちらを参照
https://github.com/noradoglabo/nLogging(nlogging source code)
working_dir ├ nLogging │ ├ __init__.py パッケージ初期化用の処理を記述 │ └ nlogging.py ライブラリ本体 ├ exsample │ └ sample.py サンプルコード ├ LICENSE ライセンスファイル(githubで生成可能) ├ pyproject.toml パッケージ作成のための設定ファイル └ README.md markdownにて記述
以下、パッケージの作成と登録に関する内容を記載していく
__init__.py
もっと大掛かりなパッケージを作成する場合に必要なのかもしれないが、現状は何も書いていない
pyproject.toml
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "nlogging"
version = "0.1.0"
description = "A Simple logging Liblary."
readme = "README.md"
requires-python = ">=3.8"
license = {file = "LICENSE"}
authors = [
  {name = "matsutaka", email = "dog@norageek.co.jp"}
]
classifiers = [
  "Development Status :: 5 - Production/Stable",
  "Programming Language :: Python :: 3",
  "Topic :: System :: Logging",
  "Topic :: Software Development :: Libraries :: Python Modules",
  "Topic :: Utilities",
]
dependencies = [
]
[project.urls]
Repository = "https://github.com/noradoglabo/nLogging.git"
[tool.setuptools]
package-dir = {"" = "nlogging"}
詳細等、理解不足の事項があるのが今後の課題(特に[build-system]の部分)
パッケージ作成とPyPI登録に必要なパッケージの準備
下記パッケージのインストール(インストール済みの場合はバージョンアップ)を行う 必要パッケージ
- build
- twine
python -m pip install --upgrade build
python -m pip install --upgrade twine
パッケージのビルド
“pyproject.toml”と同じ階層のディレクトリーにてビルドを行う
python -m build
テスト用(Test PyPI)への登録
python -m twine upload --repository pypitest dist/*
正常にアップロードが出来れば登録されたURLが表示されるのでWebサイトを内容を確認し、実際にインストールも行い動作を確認
pip install -i https://test.pypi.org/simple/ nlogging
問題無ければいったん削除(後ほど正式版をインストールして再確認)
pip uninstall nlogging
正式版(PyPI)の登録
Test版と同様に、今度は正式プロジェクトとして登録
python -m twine upload dist/*
Test版と同様、正常終了すれば登録されたURLが表示される。念のためインストールを行い動作を確認
(正常終了した時点で一般公開されている)
pip install nlogging
python_package_index_pypi_に自作パッケージを登録する方法.txt · 最終更新: 2024/03/19 14:03 by matsutaka
                
                