3
3
sponsored by Qmonus Value Stream アプリケーション開発に注力するための工夫をシェアしよう!
Qiita Engineer Festa20242024年7月17日まで開催中!

python: requirements.txt に platform や python 条件書きたいなら、requirements.in に Environment Markers を書こう

Last updated at Posted at 2024-06-27

背景

local windows で開発時は特に問題なかったが、
Azure に deploy したら何故か動かない。

で、調べたら、pywin32 がねーよって怒られていた。
そりゃそうだよね、win32 ですから! :sweat:

で、その対策の備忘録

環境

local Windows11 powershell
az/azd cli
Azure App Service Linux
Python 3.11

対応策

windows でのみ動くように requirements.in を定義する

以下のように定義してやることで、platform 条件で install させることが可能

requirements.in の例
pywin32; sys.platform == 'win32'

依存関係処理した上で、条件追記してくれるので、非常に助かる

requirements.txt 出力例
pywin32==306 ; sys.platform == 'win32'
    # via
    #   -r requirements.in

他にも Python version なんかも指定できる。
詳細は以下で

image.png

ネット記事だと、古い書き方?が記載されてたりするので、公式を確認しましょう

ex.) sys_platform == "win32"
これで、動かねーって少し悩みました :sweat_smile:

あとがき

当初、これしたと気、requirements.txt にしか書けないと思って、
自動生成されると上書きで困るーとか思ったけど、in に書いても上手くいってめっちゃ助かった :laughing:

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3