簡単なPythonプロジェクトをPyPiに登録する

PyPiとは

何故PyPiするか

「俺のソフトは世界を救う」と思う場合に公開する。
そうでなくても、よく使うツールをPyPiに上げておくと何時でもどこでも簡単にインストールができて便利。つまり、汎用性があり公開できるものなら自分や内輪のものでも登録してしまうのはありかな、と。ただし、他人の時間を無駄にしないようにどういう代物なのかを明記しておく必要はある。これには下のクラシファイア参照。

ユーザ登録

プロジェクト構造

ここではPythonファイル一つによって構成される簡単なものを例にする。


debify/
setup.py
README
debify.py

setup.py


from distutils.core import setup

setup(
name = "debify",
# 階層があるプロジェクトはこれ
# packages = ["debify"],
# フラットなプロジェクトはこれ
py_modules = ["debify"],
# コマンド。 ディフォルトで/usr/local/bin/に入る
scripts = ["debify.py"],
version = "0.0.1",
# ここのから選ぶ? http://pypi.python.org/pypi?:action=list_classifiers 「License ::」を検索。
license = "LGPL",
# これも同上
platforms = ['POSIX', 'Windows'],
# このモジュールは何をするか一言
description = "pack a set of files into a .deb file with minimal fuss.",
author = "karasuyamatengu",
author_email = "karasuyamatengu@じーめーる.com",
url = "https://github.com/tengu/debify",
keywords = ["debian", "package"],
# できるだけ該当するクラシファイアお入れておくといい。
# このクラシファイアは勝手に入力しないで該当するものをここから見付けてくる http://pypi.python.org/pypi?:action=browse
classifiers = [
"License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)",
# 対象とするOS。「Operating System :: POSIX」など
"Operating System :: POSIX :: Linux",
"Programming Language :: Python",
# プロジェクトのステータス。本番で磨き抜かれたものでなければ'3 - Alpha'、'4 -Beta'などとしておくのが無難だ。
"Development Status :: 4 - Beta",
# 稼動環境: 端末、ウェブ、デーモン、X11など
"Environment :: Console",
# 対象ユーザ
"Intended Audience :: Developers",
"Topic :: Utilities",
"Topic :: Software Development",
],
# 複数行の説明
long_description = """\
debify: pack a set of files into a .deb file with minimal fuss.
...
...
"""
)

登録

$ python setup.py register sdist upload
登録したときのユーザ名とパスワードを聞いてくる。うまくいくとPyPiサーバにコードがアップロードされダウンロード可能になる。http://pypi.python.org/pypi にログインすると「Your Packages」というメニュー(右上)に出てくる。

テスト

$ python setup.py sdist
$ emacsclient dist/*.tar.gz # <- できたパッケージの中身を確認

$ python setup.py bdist
$ emacsclient dist/*.tar.gz # <- できたパッケージの中身を確認

インストール

$ sudo pip install debify
あるいは
$ sudo easy_install debify