at backyard

Color my life with the chaos of trouble.

bottleアプリケーションにflashを使いたい。あと、PyPI初登録の話。

使いたいなと思って探してみたらありました。クリスマスイブの夜のことでした。

pypi.python.org


で、下のコマンドで淹れようとしたらエラーになりました。

pip install bottle-flash
Using cached bottle-flash-0.1.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/mn/q382m6zd3jqbyxy6f4tg97140000gn/T/pip-build-c2dmcbx3/bottle-flash/setup.py", line 17, in <module>
        long_description = open('README.rst').read(),
    FileNotFoundError: [Errno 2] No such file or directory: 'README.rst'

'README.rst'がないというエラーだったので、
ひとまずファイルをダウンロードして直接参照して使用することに決めました。

でも、そのままでは現在のBottleでは使えないようでした。
動くようにメソッド内に手を加えます。と言っても大した変更はしていない。
(Bottleの仕様が途中で変わったのかな?
ちゃんとBottleを使っているわけではないので、これはあくまで想像ですが)

ダウンロードしてきた"bottle_flash.py"の下記の箇所を以下のように書き換えることで、
正常に動きました。(2016/12/24時点)

-        self.app.hooks.add('before_request', self.load_flashed)
-        self.app.hooks.add('after_request', self.set_flashed)
+        self.app.add_hook('before_request', self.load_flashed)
+        self.app.add_hook('after_request', self.set_flashed)

ちなみに私が使用していたbottleやPythonのVersionは下記の通りです。
古いバージョンだとそのまま動くのかもしれない。

Python 3.5.1
bottle==0.12.9

せっかくだから今回の修正を整えて"bottle-flash"の作者にプルリク送ろうと考えていたら、
どうやら、このリポジトリ自体が既になくなっているようでした。

今後Bottleでflash使いたいときに、
pipでinstallしてすぐに使いたいなと思ったので、
このプロジェクトをforkしてPyPIに登録することにしました。
ライセンスも引き継ぐ形でMIT。

なおforkしたリポジトリのURLは下記のとおりです。

Github

github.com


PyPI

pypi.python.org



インストール方法は、下記の通り。

pip install bottle-flash2

"bottle-flash2"って名前にしたのは、
いかにもforkしましたよ的な名前にしようと思ったのと、
なんだかゲームの必殺技っぽい語感だと思ったので。
(今のところ機能拡張などは考えていないので、名前は特に変えなくていいかなと思った)

PyPI登録時にミスしたこと

初のPyPI登録ということもあって、色々と登録時にミスをしてしまった。
どんなミスかは箇条書きで書いていく。

1."setuo.py"内のsetup()内の"name"内の名称を"bottle_flash2"という形で間違えてしまっていた。
nameの部分はpip install時に指定する名称にもなるようなので、ここを間違えるのはイタい。
(そのため最初は"pip install bottle_flash2"という名称でインストールするようになっていたわけだ。)

2.READMEを初め".md"で書いてしまっていた。".rst"でないと整形がされない。

変換方法については備忘録代わりに別記事としてメモしておいた。

shinshin86.hateblo.jp


3.TestPyPIでのテストを行えなかった。
本来PyPIに登録する前にTest用のTestPyPIで登録に関するテストなどを
行っておくべきであるようなのだが、その手順を抜かしてしまった。

TestPyPI · The Python Package Index


これには理由があって、TestPyPIへの登録を済ませて下記のコマンドを叩いたときに、
何故かログインができなくて、調べても原因を救命できなかったので、
仕方なくPyPIへの登録へ進んでしまったのだ。

python setup.py register -r https://testpypi.python.org/pypi

その後TestPyPIへの登録もできて、諸々のミスの修正前テストを行うことが出来た。
(ちなみに、ログインできなかった原因は単純に".pypirc"のパスワードをタイポしていただけだった...orz)

まあ、そういうわけで"bottle-flash2"は公開時点で
いきなりVersionが"0.0.1"から"0.0.3"にあがっている。
最初にドキュメントや記事を丁寧に見ておけば防げたであろうことなので、
これは反省ポイントである。



あと、あとでBottleのAPIもちゃんと読んどこう、この機会に

https://bottlepy.org/docs/dev/api.html

PyPIへの登録の際に参考にさせていただいた記事

ちなみにPyPIへの登録については、下記の記事を参考にさせていただきました。

qiita.com

qiita.com

qiita.com

余談

ちなみに、PyPIって"パイアイピー"って読むんですね
上司と酒飲みながらPythonのこと話すときに
"パイパイっていうPythonパッケージを管理するためのサービスがあってですね〜"って普通に話していました。
はずかしい。。。

追記(2017/1/29)

PyPIの件、普通に皆パイパイって呼んでいるみたいだったので、特に問題ナッシングそう。