我正在使用serverless-python-requirements插件来部署aws lambda;然后我使用pip Frozen> requirements.txt创建了requirements.txt。但是,requirements.txt可能包含超出所需的软件包(用于部署)。
我的问题是:serverless-python-requirements插件能否删除我的lambda函数未使用的不必要的软件包(仅保留直接或间接(依赖项)所需的软件包)?
这里编写的所有内容都适用于任何项目配置(是否使用virtualenv)。
此操作的正确策略是拥有多个需求文件。
假设您有一组适用于所有环境的默认库。
您应该放入common.txt
文件。
假设您还有dev
的两个配置,其中包含调试库,api文档和导航等另一个用于tests
,具有测试框架的覆盖范围和类似内容。
因此,在这种情况下,您应该具有:
dev.txt
test.txt
所以现在我们有3个环境(prod,dev,test)的3个文件。 dev.txt
和`text.txt的第一行应为:
-r common.txt
现在我们只能安装对该环境重要的需求。
[this blog中有一个很好的教程,关于如何在django中做到这一点(但可以在任何框架中应用)>
这是我对烧瓶应用程序的最终解决方案:
common.txt
appdirs==1.4.3 CacheControl==0.12.6 certifi==2019.11.28 chardet==3.0.4 Click==7.0 colorama==0.4.3 contextlib2==0.6.0 distlib==0.3.0 distro==1.4.0 Flask==1.1.2 html5lib==1.0.1 idna==2.8 ipaddr==2.2.0 itsdangerous==1.1.0 Jinja2==2.10.1 lockfile==0.12.2 MarkupSafe==1.1.1 msgpack==0.6.2 packaging==20.3 pep517==0.8.2 progress==1.5 pyparsing==2.4.6 python-dotenv==0.13.0 pytoml==0.1.21 requests==2.22.0 retrying==1.3.3 six==1.14.0 urllib3==1.25.8 webencodings==0.5.1 Werkzeug==0.15.5
dev.txt
-r common.txt black==19.10b0
也要安装软件包,您应该使用以下命令:
pip install -r dev.txt #will install in order common.txt and dev.txt dependencies.
如果不清楚,请通知我。