SlideShare a Scribd company logo
パッケージングしよう
Start Python Club みんなの Python 勉強会#77
Atsushi Odagiri
2022-01-27
はじめに
お前誰よ
▶ aodag
▶ Atsushi Odagiri
▶ 株式会社オープンコレクター
▶ python1.5 とかから
アジェンダ
▶ Python パッケージングのエコシステム
▶ パッケージングして配布する
Python パッケージングのエコシステム
PyPA
▶ Python Packaging Authority
▶ パッケージング関連の PEP(Python Enhancement Proposal)
を提案
▶ パッケージング関連ツールの保守
PyPA が提供するツール
▶ pip
▶ setuptools
▶ wheel
▶ twine
▶ build, pep517.build
▶ PyPI(warehouse)
PyPA が提供するツール
配布物の形式
▶ ソースディストリビューション (sdist)
▶ tar ball
▶ zip
▶ バイナリディストリビューション (bdist)
▶ wheel
sdist
▶ ソースコードやドキュメントやメタデータファイルなどその
まま含まれる
▶ ビルド前の外部言語によるソース
▶ wheel を作成するための情報
▶ インストールされないドキュメントなどの情報
▶ テストコード
bdist
▶ 今は wheel のことだけ考えといてください
▶ そのまま zip 解凍などで展開するだけの状態
▶ インストールされるファイルだけが入っている
pip インストーラー
▶ PyPI や find-links から配布物 (sdist や bdist) をダウンロードし
てインストール
$ python get-pip.py
$ pip install pyramid
pip がどこにインストールするか
▶ pip の場所を pip --version で確認
▶ pip が入っている site-packages ディレクトリにインストー
ルされるはずです
▶ python で site.getsitepackages() も確認
▶ pip が入っている site-packages ディレクトリが含まれてい
ることを確認しましょう
$ pip --version
pip 21.3.1 from /home/aodag/works/.venv/lib/python3.9/site-
packages/pip (python 3.9)
$ python -c "import site;print(site.getsitepackages())"
['/home/aodag/works/.venv/lib/python3.9/site-packages', '/h
packages', '/home/aodag/works/.venv/lib/python3/dist-
packages', '/home/aodag/works/.venv/lib/python3.9/dist-
packages']
setuptools, wheel パッケージャー
▶ 配布物を作成する
▶ PEP517 に対応しているため build で配布物を作成可能
▶ PEP517 対応 (pyproject.toml) については後述
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
build, pep517.build ビルダー
▶ 配布物を作成する
▶ プロジェクトごとに異なる作成方法に対応する
▶ pyproject.toml に書かれているツールを呼び出す
$ pip install build
$ python -m build .
twine アップローダー
▶ PyPI に配布物をアップロードする
▶ アップロード前のチェックや PyPI へのプロジェクト登録な
どもこれで
$ pip install twine
$ twine check `dist/*`
$ twine register `dist/*.whl`
$ twine upload `dist/*`
PyPI パッケージインデックス
▶ Python Package Index
▶ 配布物のインデックスや配布物自体をホスティング
▶ 昔はインデックスだけで別途ホスティングしてある配布物の
ダウンロードリンクを登録していた
▶ https://pypi.python.org
パッケージングして配布する
配布物を作る(パッケージング)
▶ メタデータが必要
▶ sdist と bdist(wheel) の両方を PyPI に上げてくれるとユー
ザーはうれしい
▶ C 拡張を含む話はしません
ファイル
▶ 実際に配布したい Python モジュール以外に必要なファイル
▶ setup.py
▶ setup.cfg
▶ pyproject.toml
▶ MANIFEST.in
▶ README.{md,rst}
▶ LICENSE
setup.py
▶ 昔はここにメタデータを含めて必要なことを全部書いていた
▶ もうこれで十分
from setuptools import setup
setup()
setup.cfg metadata
▶ パッケージメタデータを書く
[metadata]
name = aodag_super_util
version = 0.1
author = Atsushi Odagiri
author_email = aodagx@gmail.com
url = https://git.example.com/aodag/super_util
license = MIT
description = file: README.md
description-content-type = text/markdown
setup.cfg options
▶ 配布物のオプションを書く
▶ 主に依存関係
[options]
packages = find:
install_requires =
pyramid
pyramid_jinja2
setup.cfg extras_require
▶ 追加の依存関係
[options.extras_require]
testing =
pytest
pytest-randomly
doc =
sphinx
setup.cfg find
▶ インストール対象のモジュールに関する情報
▶ ここでの package とは Python モジュールをまとめた
__init__.py を持つディレクトリのほう
[options.packages.find]
exclude =
tests
examples
依存関係
install_requires
▶ 依存ライブラリを書く
▶ バージョンを直接指定しないように
▶ 最低限必要なバージョンなどの範囲指定に留めましょう
extras_require
▶ 追加機能としての依存ライブラリを書く
▶ デフォルトとしてインストールされない
▶ 開発時に利用する依存ライブラリもここに書いちゃう
pyproject.toml
▶ PEP517 のビルドフローで setuptools を利用するための設定
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
MANIFEST.in
▶ sdist に含めたい (含めたくない) ファイルを設定
recursive-include aodag/specialutils/templates *.html
exclude *.swp *~
MANIFEST.in のオプション
▶ 主なものだけ distutils から抜粋
Command Description
include pat1 pat2 … マッチするファイルを全部含める
exclude pat1 pat2 … マッチするファイルを全部除外する
recursive-include
dir pat1 pat2 …
指定ディレクトリ以下のマッチする
ファイルを再帰的に含める
recursive-exclude
dir pat1 pat2 …
指定ディレクトリ以下のマッチする
ファイルを再帰的に除外する
README を setup.cfg に活かす
▶ README{.md,.rst} の内容をメタデータの description に使う
[metadata]
...
description = file: README.md
description_content_type = text/markdown
README{.md,.rst}
▶ markdown か reStructured text か?
▶ デフォルトは reStructured text
▶ PEP 566 でフォーマットを指定できるようになった
▶ PyPI では markdown を利用できるようになった
▶ お好きな方でどうぞ
LICENSE
▶ 必ずつけましょう
▶ メタデータにも書いておきましょう
▶ ライセンスごとの identifier は spdx を参照してください
[metadata]
...
license = MIT
どうしてこんなにファイルが必要?
▶ 歴史的経緯 です><
▶ distutils から setuptools 導入当初 setup.py に全部書く
▶ setuptools の改善 メタデータは setup.cfg に書く
▶ PEP517 対応 pyproject.toml に build 設定を書く
もういらない?
▶ setup.py
▶ editable インストールに必要
▶ PEP660 で解決される予定
▶ setup.cfg
▶ パッケージメタデータを書くのに必要
▶ PEP621, PEP631 で解決される予定
▶ MANIFEST.in
▶ setuptools_scm を使うことで不要になる
▶ バージョン管理下のファイルは全部 sdist に入れてしまえ
setuptools_scm
▶ scm(git など) で管理しているファイルを sdist に含めるよう
になる
▶ scm(git など) のタグやリビジョンを元に version を生成して
くれる
# pyproject.toml
[build-system]
requires = ["setuptools>=45", "wheel", "setuptools_scm>=6.2
[tool.setuptools_scm]
package data
▶ こういうソースコード以外のファイルもありますよね?
▶ HTML テンプレート
▶ サンプルデータやシード
▶ setuptools_scm を使わない場合、MANIFEST.in に書かないと
sdist に入らないので結果的にインストールされません
▶ 2箇所あるので気をつけましょう
▶ MANIFEST.in で sdist に含める
▶ setup.cfg で options.include_package_data を True にする
[options]
include_package_data = True
package data を参照する方法
▶ pkg_resource を使う
▶ pkg_resources は setuptools に含まれることに注意
▶ __file__ からファイルパスを導出する
package data を pkg_resources で読み込む
▶ pkg_resources の resource_string や resource_stream
を使って読み込む
▶ pkg_resources は setuptools に含まれるモジュールであ
ることに注意
▶ 依存関係に setuptools を含めることになります
import pkg_resources
hello_html = pkg_resources.resource_string(__name__, "templ
package data を __file__ を使って読み込む
▶ __file__ を使うなら標準モジュールのみで実現できます
▶ pathlib を使うのも良いでしょう
here = os.path.dirname(__file__)
with open(os.path.join(here, "templates", "hello.html")) as
hello_html = f.read()
editable インストール
▶ 開発対象のソースコードが site-packages にコピーされな
いようにします
▶ 開発中は editable install で依存ライブラリをインストールで
きます
$ pip install -e .
$ pip freeze
配布物を作る前に
▶ テストはしておきましょう
▶ テスト用の依存関係は testing などの名前で extras-require に
しておくと楽です
▶ 様々な python バージョンに対してテストする場合は tox や
nox の利用を検討しましょう
$ pip install -e .[testing]
$ pytest
build で配布物を作る
▶ build を使って配布物を作成します
▶ dist ディレクトリ以下に sdist と wheel が作成されます
$ python -m build .
$ ls dist
配布する
▶ 大きく公開する場合は twine を使って PyPI にアップロードし
ます
▶ 事前に PyPI アカウントを作っておきましょう
▶ プライベートリリースなどでは simple repository にすると面
倒が減るかもしれません
▶ 今回は説明しません
$ python -m twine upload dist/*.whl
まとめ
まとめ
▶ パッケージングのアクションごとに別々のツールが提供され
ている
▶ PEP 標準に準拠するように setuptools もがんばっている
▶ setuptools が持っていた機能を PEP で練り直して標準化して
いる
参考文献
▶ Python Packaging User Guide
▶ setuptools Documentation
▶ Distributing Python Modules (Legacy version)
▶ SPDX License List
▶ PEPs
▶ PEP 427 – The Wheel Binary Package Format 1.0
▶ PEP 503 – Simple Repository API
▶ PEP 517 – A build-system independent format for source trees
▶ PEP 518 – Specifying Minimum Build System Requirements for
Python Projects
▶ PEP 621 – Storing project metadata in pyproject.toml
▶ PEP 566 – Metadata for Python Software Packages 2.1
▶ Welcome to the tox automation project
▶ Welcome to Nox

More Related Content

What's hot

Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
Yahoo!デベロッパーネットワーク
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころ
Takuto Wada
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
Arithmer Inc.
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
Shota Imai
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
Kota Saito
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
gree_tech
 
Katib
KatibKatib
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
 
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTT DATA Technology & Innovation
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
 
ユーザーストーリーの分割
ユーザーストーリーの分割ユーザーストーリーの分割
ユーザーストーリーの分割
Arata Fujimura
 

What's hot (20)

Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころ
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
 
Katib
KatibKatib
Katib
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
ユーザーストーリーの分割
ユーザーストーリーの分割ユーザーストーリーの分割
ユーザーストーリーの分割
 

Similar to みんなのPython勉強会#77 パッケージングしよう

パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今Atsushi Odagiri
 
Distutil setuptools distribute
Distutil setuptools distributeDistutil setuptools distribute
Distutil setuptools distributeAtsushi Odagiri
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
AromaBlack
 
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
Fuminobu TAKEYAMA
 
Pythonとパッケージングと私
Pythonとパッケージングと私Pythonとパッケージングと私
Pythonとパッケージングと私
Atsushi Odagiri
 
debexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするにはdebexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするには
kenhys
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presenKouhei Maeda
 
PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)
Takayuki Shimizukawa
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
NTT DATA Technology & Innovation
 
20170131 python3 6 PEP526
20170131 python3 6 PEP526 20170131 python3 6 PEP526
20170131 python3 6 PEP526
masahitojp
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
Yuya Matsushima
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
Atsushi Odagiri
 
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようPython東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしよう
Hiroshi Funai
 
Osc2013 tokyospring
Osc2013 tokyospringOsc2013 tokyospring
Osc2013 tokyospring
Masataka Tsukamoto
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
Taichi Ishitani
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
 
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
ryohji ikebe
 
とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。
Kouhei Maeda
 
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
NuGet でゲット! Visual Studio パッケージ マネージャ―概要NuGet でゲット! Visual Studio パッケージ マネージャ―概要
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
Akira Inoue
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
Atsuo Ishimoto
 

Similar to みんなのPython勉強会#77 パッケージングしよう (20)

パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
 
Distutil setuptools distribute
Distutil setuptools distributeDistutil setuptools distribute
Distutil setuptools distribute
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
 
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
 
Pythonとパッケージングと私
Pythonとパッケージングと私Pythonとパッケージングと私
Pythonとパッケージングと私
 
debexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするにはdebexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするには
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
 
PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
 
20170131 python3 6 PEP526
20170131 python3 6 PEP526 20170131 python3 6 PEP526
20170131 python3 6 PEP526
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
 
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようPython東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしよう
 
Osc2013 tokyospring
Osc2013 tokyospringOsc2013 tokyospring
Osc2013 tokyospring
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
 
とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。
 
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
NuGet でゲット! Visual Studio パッケージ マネージャ―概要NuGet でゲット! Visual Studio パッケージ マネージャ―概要
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
 

More from Atsushi Odagiri

async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022
Atsushi Odagiri
 
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
Atsushi Odagiri
 
pyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptoolspyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptools
Atsushi Odagiri
 
Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定
Atsushi Odagiri
 
Python3 移行への軌跡
Python3 移行への軌跡Python3 移行への軌跡
Python3 移行への軌跡
Atsushi Odagiri
 
パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016
Atsushi Odagiri
 
Sqlalchemy sqlの錬金術
Sqlalchemy  sqlの錬金術Sqlalchemy  sqlの錬金術
Sqlalchemy sqlの錬金術
Atsushi Odagiri
 
Clack meetup #1 lt
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 lt
Atsushi Odagiri
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来Atsushi Odagiri
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来Atsushi Odagiri
 
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europythonPyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europythonAtsushi Odagiri
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid uniqueAtsushi Odagiri
 
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介Atsushi Odagiri
 
Setup.pysetup.cfg
Setup.pysetup.cfgSetup.pysetup.cfg
Setup.pysetup.cfg
Atsushi Odagiri
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3Atsushi Odagiri
 

More from Atsushi Odagiri (20)

async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022
 
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
 
pyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptoolspyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptools
 
Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定
 
Python3 移行への軌跡
Python3 移行への軌跡Python3 移行への軌跡
Python3 移行への軌跡
 
パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016
 
Sqlalchemy sqlの錬金術
Sqlalchemy  sqlの錬金術Sqlalchemy  sqlの錬金術
Sqlalchemy sqlの錬金術
 
Clack meetup #1 lt
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 lt
 
Pyramid入門
Pyramid入門Pyramid入門
Pyramid入門
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
Bplt11 form alchemy
Bplt11 form alchemyBplt11 form alchemy
Bplt11 form alchemy
 
Python3でwebアプリ
Python3でwebアプリPython3でwebアプリ
Python3でwebアプリ
 
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europythonPyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid unique
 
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
 
World plonedaylt
World plonedayltWorld plonedaylt
World plonedaylt
 
Setup.pysetup.cfg
Setup.pysetup.cfgSetup.pysetup.cfg
Setup.pysetup.cfg
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
 
Form libraries
Form librariesForm libraries
Form libraries
 

Recently uploaded

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 

Recently uploaded (9)

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 

みんなのPython勉強会#77 パッケージングしよう