人生迷子

大学院に復帰!現在はBridge of Fashionという団体でファッション業界と他の業界を繋げる活動を定期的に行いつつ、徒然なるままに自分が思ったことをブログにまとめています。

pythonのsetuptools使ってみようと思い立った

【お盆らしく】

先週末、那須いっておりました。 バカみたいに涼しかった〜! あいにくの雨と曇りの連続だったけどとても楽しかった! ホテルじゃなくてコテージ借りたんですけど、 自分たちでカレーとか作ったりして夕飯食べるのもいいものですね^^

ちなみに宿泊したのはこちらのトーコーテニスコート&ビレッジ

値段もリーズナブルで、 最初到着したときにはコテージの外装が最初ちょっと古びてたから 「安かったししょうがないかー」とか勝手に落ち込んでたけど 中入ったら全然落ち込む余地なし!すごい清掃も行き届いてて、とても快適でした!

もともとはペットを同伴するための宿みたいで、 受付にも何匹か犬やら猫やらがくつろいでました。 周りも何もなくて静かなのでとてもオススメです☻

【作品は拡散しなくては意味がないと思った】

ので、稚拙ながら前回の投稿で紹介させてもらったモジュールを配布可能な形にすべく 初めてsetuptoolsモジュールを使ってみました。 今回はその奮闘記をかいてみました。

前回の投稿 -> 【プロダクト紹介】初めの一歩【TkInterを用いたログインウィンドウ】 - 何もわからない

【setuptoolsとは】

pythonにはパッケージ管理のツールがいろいろごちゃごちゃしており、 とてもわかりにくいのですが、 こちらの記事がとても参考になりました。

今回はそんなsetuptoolsに用意されたsetupスクリプトを使って、 LoginFrameを配布可能なものにします。

【setupスクリプト

setuptools内に定義されたsetup関数に辞書型で引数を渡すと、 setup関数を呼び出すことができます。

こちらが公式ドキュメント

このsetup関数にはモジュールの名前やバージョン、作者や作者への連絡先などを記載します。

【LoginFrameでのsetup.pyの例】

以下がLoginFrameでのsetup.pyになります。

from setuptools import setup, find_packages

setup(
        name="LoginFrame",
        version="0.1.0",
        author="akerue",
        author_email="hsmgn8118akerue[at]gmail.com",
        url="https://github.com/akerue/LoginFrame",
        packages=find_packages(),
        classifiers=[
            "Development Status :: 4 - Beta",
            "License :: OSI Approved :: MIT License",
                    ],
        )

まあ見たまんまなんですが、 "packages"ではfind_packageという関数を呼ぶことで勝手にパッケージリストを作成してくれます。 それからclassifiersではこのモジュールがどの開発段階でどういうライセンスで配布されているのかが記載されています。

ライセンスの意味についてはこちらを参考にしました。 また開発段階の記述はこちらに一覧が用意されています。

【さあいざいんすとおおおおおおーーーーーる!!】

$ sudo python setup.py install

・・・

できた・・・のか???

とりあえずインタラクティブモードでpython起動してためしてみると

>>> import LoginFrame
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named LoginFrame

ちくしょーーーーー!!泣

【何故ないのか】

なんかインストールの結果の画面ってすごいいろいろでてくるし、 最後Finishedとかでるから「あー終わった終わった♪」とかだまされちゃうんですけど 実際全然終わってない

んで何が原因だったかーっつーと "packages"を"packeges" なんて書いてまして

アチャーーー><

スペルミス! 俺の一時間返せ!

【なんだか】

自分の作ったモジュールがフツーにどこからでも呼び出せるようになる って嬉しい!楽しい! これからもどんどん作っていこうと思う!(宣言)