GitHub Actions を活用した Python プロジェクトの CI

この記事は CAMPHOR- Advent Calendar 2019 17日目の記事です.16日目の記事は @kmconner の「家の電気使用量を可視化する」でした.

この記事では,先日公開された CI/CD ツール GitHub Actions を Python のプロジェクトの CI に利用する方法を紹介します.主に GitHub Actions 上での以下の内容についてカバーします:

  • tox を使ったマルチプラットフォーム・バージョンでのテスト
  • C言語拡張モジュールを扱う際の注意点
  • バイナリを含む wheel のビルド

ここでは WSGI アプリケーションのためのラインプロファイラ wsgi_lineprof で利用している設定を紹介します.説明は不要なのでとにかく設定を知りたいという方は,直接こちらのリポジトリをチェックしてみてください.

“GitHub Actions を活用した Python プロジェクトの CI” の続きを読む

PEP 561 に準拠した型ヒントを含むパッケージの作り方

この記事では Python 3.7 で採択された PEP 561 Distributing and Packaging Type Information について簡単に解説し,PEP 561 に準拠した,型ヒントを含むパッケージの作成方法について紹介します.
“PEP 561 に準拠した型ヒントを含むパッケージの作り方” の続きを読む

パッケージマネージャがパッケージをインストールする仕組み

この記事は CAMPHOR- Advent Calendar 2017 の20日目の記事です.

Python では pip,Ruby では Bundler,JavaScript (Node.js) では npm と様々なパッケージマネージャが存在します.これらを使うと,パッケージをいい感じにインストールして使えるようにしてくれますが,どのようにしてパッケージがインストールされているのかあまりよく把握していない人もいると思います.また,Ruby では GemfileGemfile.lock, Python では requirements.txt,Node.js では package.jsonpackage-lock.jsonyarn.lock といったファイルがパッケージマネージャによって使われていますが,このようなファイルは何のために存在するのか分からない人もいるかと思います.

この記事では,パッケージマネージャがどのようにパッケージをインストールしているのかを紹介します.まず,パッケージマネージャが存在しない場合を仮定してみて,そこから様々な機能を追加していくことでパッケージマネージャが何をしているかを順に見ていきます.

“パッケージマネージャがパッケージをインストールする仕組み” の続きを読む