前言
之前一直苦於一個問題,比如一些包在Win上安裝不了,比如 uvloop 但是為了提高效率,代碼中必須有這個模塊
在運行中可以通過 os 模塊判斷是否使用, 那依賴文件呢? requirements.txt 要不要有 uvloop 呢?
正文
其實我們可以通過語法來賦予 requirements.txt 一定的靈活性.
比如,我們使用 pip freeze > requirements.txt 時,輸出的大致為

每一行為 模塊名==版本號, 這其實就是一種語法, 用來標記安裝的模塊的版本號, 其實他還有更多功能
詳見官方文檔
PEP508-doc
語法有

這里拋磚引玉,只寫一個例子,就是根據系統OS判斷要不要裝某個模塊
比如 uvloop, 不支持 Windows
我們可以這樣寫

這樣就是判斷當前環境,如果為 Linux 就安裝 0.14.0 的 uvloop 模塊,如果是其他環境就 pass
需要注意的是, Linux 是表格中寫的可選值(表格第6行列出可選Linux/Windows/Java)
請嚴格區分大小寫並不要寫錯,寫錯不會報錯但是識別不了
