主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Python: PyPIにパッケージをアップロードする最新の推奨な方法

                
tags: python
 ぼくがPyPIパッケージのアップロードを始めたのは最近のことなので、先人の書いたブログなどを参考にそれをやっていた。ところがパッケージングに関する公式ドキュメントを読むとそのやり方より推奨されるやり方が加わっており、”PyPI アップロード”でググってもそのやり方でアップロードを説明した日本語記事が上の方に出てこないのでここに書いておく。最後のアップロード作業だけ違う方法になるので、パッケージングなどの部分は先人のブログ(”PyPI アップロード”などで検索)がおおいに参考になる。
パッケージング公式ドキュメント:https://packaging.python.org/en/latest/distributing.html

 いきなり説明を端折るが、PyPIへのアカウント登録やパッケージング(アップロードする.zipや.whlの準備)はできているものとする。このあたりは別に新しいやり方がでてきたわけではない。

 まずtwineをインストールしておく。
> pip install twine

 次にブラウザで下記のリンクからパッケージの初期版を登録する。これまでは”python setup.py register”とコマンドを打っていたが、これは認証情報などをプレーンテキストで送信している。それを避けるためにブラウザでHTTPSを使う。
https://pypi.python.org/pypi?%3Aaction=submit_form
 フォームを埋めなければならないが、難しければ正しいパッケージ名とバージョンを適当に記入して登録してしまえばいい。バージョンは”0.0.0”などで。

 改めてパッケージをアップロードする。twineを使う。
> twine upload dist/*
 このやり方が推奨される理由は3つ。
・twineによるTLS通信で認証情報を読み取れなくし、中間者攻撃を防ぐ
・”python setup.py upload”でアップロードすると事前に準備したパッケージファイルが使えない。推奨されるやり方なら事前準備したパッケージファイルが使えるので、アップロードする前にパッケージファイルが展開できるかテストしておける。
・公開鍵ファイルによる署名が使える ”twine upload twine-1.0.1.tar.gz twine-1.0.1.tar.gz.asc”



おまけ - パッケージの説明を用意する
https://pypi.python.org/pypi/tornado
 有名なライブラリのパッケージページを見ると、そのライブラリに関することがまとめられている。そして項目タイトルのフォントサイズが少し大きくなっていたり、コードが背景色がグレーになっていたりと視認性のためにそれなり構造化されている。
 これはsetup.pyファイルの中で”long_description”という属性のなかで書くものだが、構造化にはHTMLでなくrSTという形式で書く必要がある。このあたりのどうやってPyPIのパッケージページの見栄えを良くするかということの基礎に触れておく。ここに書く以外にもやり方はあるだろうが、それなりまとまったやり方を説明する。

 まずプロジェクトのsetup.pyを置いであるだろうルートディレクトリにREADME.rstという名前でテキストファイルを作成する(そうすればGithubでのREADMEとしても使えるから)。そしてrST形式でライブラリパッケージの説明を書いていく。
[Project Name]
==============←前の行と同じ文字数だけ”=”を入力

This is my Python library. This library does...

Example
-------←前の行を項目タイトルにしたいので、前の行と同じ文字数だけ”-”を入力

::←コードを書きたい場合は”::”を打った後に1行空けて、インデントしてコードを書き始める

import mylib
mylib.do()

Environment
-----------

Tested on Python 2.7, 3.3, 3.4.

License
-------

This software is released under the MIT License, see LICENSE.txt.

 簡単な使い方、動作環境、ライセンスを明記しておけば最初はまずまずだろう。上記の中から”←[rSTの書き方の説明]”の部分を消し、必要な個所は自分のプロジェクトに合うように書き換え保存する。
 次にsetup.pyの”long_description”属性に上記のrSTファイルに書いた内容をつっこむようにする。setup.pyに下記の例を参考にうまく書く。
from setuptools import setup

with open("README.rst", "r") as f:
long_desc = f.read()

setup(
name = "mylib",
version = "1.0.0",
long_description = long_desc,

 これで構造化された見栄えのいいパッケージ説明がパッケージアップロード時に追加される。あとは必要に応じてもっとrST形式での書き方を調べてドキュメントの一つとして更新していくなど。
            

コメントの投稿

非公開コメント

プロフィール

Matoba

Author:Matoba

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。