Python で配布用モジュールの作成
Python で配布用モジュールの作成
Python で、pip install
でインストール可能なモジュールを作成する。
Python 3.6.3 (v3.6.3:2c5fed86e0, Oct 3 2017, 00:32:08)
バージョンは3.6.3。
3.4 以降 setuptools
が簡単に使えるようになっている。
準備
とりあえず書いたコードが PEP 8 準拠できているか確認する。
やらなくてもモジュール作成はできるので特にこのタイミングでやる意味はない。
(むしろコーディング中からマメに確認しておくべし)
PEP とは
PEP は Python Enhancement Protocol の略称。
コードフォーマットについてのベストプラクティス集がPEP 8。
ちなみに PEP 8 はStyle Guide for Python Codeで、PEP 257 は docstring のフォーマットについて触れている。どちらも一読すべし。
pytest/pep8
PEP 8 準拠できているかは pytest を使って確認できる。
pytest と pep8 プラグインのインストール
pip を使ってインストール可能。
これはグローバルに入れるべきか仮想環境に入れるかよくわからん。定石はあるのだろうか。
とりあえず仮想環境に入れる。
$ python3 -m venv . $ source ./bin/activate $ pip install pytest $ pip install pytest-pep8
実行
上記インストールで py.test が使えるようになる。
$ pytest --pep8 ./panic.py ============================= test session starts ============================== platform darwin -- Python 3.6.3, pytest-3.2.3, py-1.4.34, pluggy-0.4.0 rootdir: /Users/kazuhirofurue/work/hfpython, inifile: plugins: pep8-1.0.6 collected 1 item panic.py . =========================== 1 passed in 0.02 seconds ===========================
違反がなければパスする。
違反箇所は丁寧に指摘してくれるので一つずつ修正していく。
ディストリビューションパッケージの作成
setuptools を使用する。
モジュール作成したいファイルと同じディレクトリに以下を用意する。
- README.txt
- setup.py
$ mkdir mymodules $ cp panic.py mymodules $ cd mymodules $ touch README.txt $ touch setup.py
setup.py
from setuptools import setup setup( name='hoge', version='1.0', description='Hoge hoge tools', author='fuga', author_email='fuga@example.com', url='example.com', py_modules=['panic'], )
最後にカンマあるのすごい違和感あったけど Python ではこれ許容だそうな。もちろん無くてもいい。
README.txt はひとまずファイルだけあればモジュール作成は可能。内容はまた今度。
setup.py を実行する。
$ python3 setup.py sdist running sdist running egg_info writing panic.egg-info/PKG-INFO writing dependency_links to panic.egg-info/dependency_links.txt writing top-level names to panic.egg-info/top_level.txt reading manifest file 'panic.egg-info/SOURCES.txt' writing manifest file 'panic.egg-info/SOURCES.txt' running check creating panic-1.0 creating panic-1.0/panic.egg-info copying files to panic-1.0... copying README.txt -> panic-1.0 copying setup.py -> panic-1.0 copying panic.py -> panic-1.0 copying panic.egg-info/PKG-INFO -> panic-1.0/panic.egg-info copying panic.egg-info/SOURCES.txt -> panic-1.0/panic.egg-info copying panic.egg-info/dependency_links.txt -> panic-1.0/panic.egg-info copying panic.egg-info/top_level.txt -> panic-1.0/panic.egg-info Writing panic-1.0/setup.cfg Creating tar archive removing 'panic-1.0' (and everything under it)
これで tar.gz ファイルが出来上がる。
このファイルを配布すれば、以下のように pip でインストール可能。
$ pip install panic-1.0.tar.gz
その他
Download Python for Other Platforms にて紹介されている
Python for iOS
Pythonista is a complete development environment for writing Python scripts on your iPad or iPhone.
気になったので購入。
試しに Flask とか描いてみたら普通に iPad ローカル上で動いちゃってますな。
面白そうだけど多機能過ぎて使いこなせるかは怪しい。しかし面白い