5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonのパッケージを作る方法 簡単な手順

Last updated at Posted at 2022-12-21

はじめに

pythonのパッケージを作る方法を整理します。

1 プロジェクトフォルダとファイルの作成

下記のようにファイル構造を作成する。
パッケージの名称を companypackageとします。

プロジェクトのフォルダ構造

packaging_example/
└── src/
    └── companypackage/
        ├── __init__.py
        └── example.py

example.pyに下記のような簡単なプログラムを入れておきます。

examplepy
def add_one(number):
    return number + 1

2 パッケージファイルを作成する

プロジェクトの構造はこのようにアップデートされます。

プロジェクトのフォルダ構造

packaging_example/
├── LICENSE
├── pyproject.toml
├── README.md
├── src/
    └── companypackage/
       ├── __init__.py
       └── example.py

#2.1 pyproject.tomlを作成する

pyproject.toml
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "companypackage"
version = "0.0.1"
authors = [
  { name="Example Author", email="author@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

[project.urls]
"Homepage" = "https://github.com/pypa/sampleproject"
"Bug Tracker" = "https://github.com/pypa/sampleproject/issues"

#2.2 README.mdを作成する

README.md
# Example Package

This is a simple example package. You can use
[Github-flavored Markdown](https://guides.github.com/features/mastering-markdown/)
to write your content.

#2.3 LICENSEファイルを作成する

LICENSE
Copyright (c) 2018 The Python Packaging Authority

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

3 パッケージファイルを生成する。

buildパッケージをpipでインストールします。

pip install build

ターミナルで下記の命令語を入力します。

pyton -m build

下記のようなパッケージファイルが /distフォルダに生成されます。

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

4 パッケージファイルをtestpypiにアップロードする。

pypiではなく、まずtestpypiにアップロードする方法を説明します。
基本的な方法はこちらで確認してください。
https://test.pypi.org/

twineパッケージをpipでインストールします。

pip install twine

ターミナルで下記の命令語を入力します。

twine upload --repository testpypi dist/*
Uploading distributions to https://test.pypi.org/legacy/
Enter your username: __token__
Uploading companypackage-0.0.1-py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.2/8.2 kB • 00:01 • ?
Uploading companypackage-0.0.1.tar.gz
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.8/6.8 kB • 00:00 • ?

パッケージをアップロードしたら、 TestPyPI 上で閲覧できるようになります;
例えば: https://test.pypi.org/project/example_package_YOUR_USERNAME_HERE

5 自分のパッケージをインストールする。

下記のようなパッケージページが形成されますので、その指示に従ってインストールしてください。
image.png

インストールの例

pip install -i https://test.pypi.org/simple/ comcomtest

5.1 自分のパッケージをチェックする。

from companypackage import example

print(example.add_one(2))

3

6 パッケージファイルをpypiにアップロードする。

本番のpypiにアップロードする方法を説明します。
testpypiと同様に自分のidにログインし、API Tokenを確保しておいてください。

ターミナルで下記の命令語を入力します。

twine upload --repository pypi dist/*

#参考資料
https://packaging.python.org/en/latest/tutorials/packaging-projects/

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?