GOGOGO!!!
なにかしらの python パッケージをつくるときの最小要件を記載したリポジトリ。
local python environment (version >= 3.6)
Global な python 環境を汚さないように venv 内部で作業するようにします。
python -m venv .venv
source .venv/bin/activate
CurrentDirectory .
を起点として pip install を実行すると現在の python 環境に setup.py の内容のパッケージがインストールされます。
pip install -e .
上記をこのプロジェクトのルートで実行すると goto_tools
が install されます。
08:01:39 in my-awesome-package on master [?] via my-awesome-package
➜ ipython
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.24.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from goto_tools import version
In [2]: print(version.__version__)
0.511
リポジトリを github / gitlab へ upload していれば git+<my-repo-url>
でインストールを行なうことが出来ます。gitlab の url は https://github.com/nyk510/my-awesome-package
ですので、以下で install 出来ます。
pip install git+https://github.com/nyk510/my-awesome-package
version は tag で管理することが出来ます。例えば v0.510 というタグがありますがこれを install したい場合は suffix として @v0.510
をつければOKです。
pip install git+https://github.com/nyk510/my-awesome-package@v0.510
(ちなみにこれで install すると version が 0.510 になります。試してみてね。)
pypi 経由での公開をすると pip install my-package-name
でインストールができ pypi 上にも readme が展開されて表示されるようになります。かっこいいですね。
公開のためには
- pypi でアカウントを作成
- 作成したアカウントのログイン情報、または APITOKEN を取得
twine
を使って pypi への upload
という手順を踏みます。詳しくは以下のURLなど参考にしてください。
- Python: Twine を使って PyPI にパッケージをアップロードする: https://blog.amedama.jp/entry/2017/12/31/175036
- Packaging Python Projects: https://packaging.python.org/tutorials/packaging-projects/
テスト用モジュールを install
pip install -e .[test]
setup.py
に記述された extra_require へ渡された dict の key == test となるものが install されます。今回のプロジェクトの場合
def get_extra_requires():
extras = {
# テスト用のパッケージ
'test': ['pytest'],
# ドキュメント生成用パッケージ
'document': ['sphinx', 'sphinx_rtd_theme']
}
return extras
で定義されているので pytest
が install されます。
pytest
08:10:49 in my-awesome-package on master [?] via my-awesome-package took 17s
➜ pytest
=========================================== test session starts ===========================================
platform linux -- Python 3.7.1, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: /home/nyker/workspace/my-awesome-package
collected 1 item
tests/test_version.py . [100%]
============================================ 1 passed in 0.01s ============================================
- TODO