結論
Poetryのenvironment-markers
という機能を使いましょう。
直面した問題
pyheif
というpackageをpoetryを使ってインストールしたいのですが、どうやら現時点(2022/8/25)ではm1 macだと以下エラーが出て動いてくれないようです。
EnvCommandError
'libheif/heif.h' file not found
そこでpyheifのissueにあるコメントの通り、m1-support修正のパッチが当たったversionを指定してpoetry install
すると次はm1 mac環境では動いたのですがEC2環境でpoetry install
できなくなりました。
解決法
この問題を解決するためpoetryのenvironment-markers
という機能を使い、m1 mac環境でのみ修正が当たったversionを指定するよう以下のようにpyproject.toml
を書き換えました。
pyheif= [
{version = "^0.5.1", markers = "sys_platform != 'darwin'"},
{git = "https://github.com/guillaumegenthial/pyheif.git", rev = "m1-support", markers = "sys_platform == 'darwin'"} # For m1 mac support. ref: https://github.com/carsales/pyheif/pull/45#issuecomment-1130056328
]
これで無事にEC2およびlocalのm1 mac環境でも無事poetry install
が通るようになりました!
poetryでは他にも複雑な条件でinstallするパッケージを指定できるみたいです、条件によってinstallするpackageのバージョンを変更したいなどありましたらこの公式ページを参考にしてみて下さい。
こちら会社の先輩(@soymsk)に教えていただきました👍