poetryは、パッケージマネージメントや、パッケージ作成を簡単にしてくれるツール
githubにテスト用のパッケージを作成してpipでinstallするところまで試してみた
poetryでpackage作成
ちょうどfastapiを試してたので実行するとテストサーバが立ち上がるものを対象にした
完成したリポジトリは以下
GitHub - uni-3/fastapi_mock: testing for python package
poetry設定
初期化
カレントディレクトリをルートリポジトリとして作成していく
poetry init
各設問が表 示されるので適当に答えていく
pyproject.toml
以下では
Package name
fastapi_mock
python script
fastapiのチュートリアルコードほぼそのまま
fastapi_mock.py
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str=None):
"""
Parameters
----------
- item id
- query string
Returns
-------
- json
"""
return {"item_id": item_id, "q": q}
def main():
# for local
uvicorn.run(app, host="0.0.0.0", port=8000)
if __name__ == '__main__':
main()
必要なpackageを追加するには以下のようにすれば良い
poetry add fastapi uvicorn
ローカルで実行
poetry install
poetry run python -m fastapi_mock
publish
配布用ファイル群を生成する
poetry build
./dist
dist以下含む各ファイルをリポジトリに追加してpushすることでpublishする
git push
installテスト
pipコマンド
https
pip3 install --user git+https://github.com/uni-3/fastapi_mock.git
ssh
pip3 install --user git+ssh://[email protected]:uni-3/fastapi_mock.git
実行
インストールされていることを確認して
pip3 list
...
fastapi-mock 0.1.0
...
実行する
python3
Python 3.7.6 (default, Dec 30 2019, 19:38:26)
[Clang 11.0.0 (clang-1100.0.33.16)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import fastapi_mock
>>> fastapi_mock.main()
INFO: Started server process [52714]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: 127.0.0.1:56704 - "GET / HTTP/1.1" 200 OK
^CINFO: Shutting down
INFO: Waiting for application shutdown.
INFO: Application shutdown complete.
main()
おまけ
調べたけど使わなかったコマンドとか
実行コマンドの定義
cliなど、コマンドで実行したいときは
pyproject.toml
pyproject.toml
...
# コマンド
[tool.poetry.scripts]
fastapi_mock = "fastapi_mock:main"
poetry run fastapi_mock
で実行できる
リポジトリ内のディレクトリにあるpackageを公開する
例えば
fastapi_mock
api/
urlのshebangにsubdirectoryを指定すれば良い
https
pip3 install --user git+https://github.com/uni-3/fastapi_mock.git#subdirectory=api
ssh
pip3 install --user git+ssh://[email protected]:uni-3/fastapi_mock.git#subdirectory=api