我正在使用serverless-python-requirements插件来部署aws lambda;然后我使用pip Frozen> requirements.txt创建了requirements.txt。但是,requirements.txt可能包含超过所需的软件包(用于部署)。
我的问题是: 可以通过serverless-python-requirements插件删除我的lambda函数未使用的不必要的软件包(仅保留直接或间接(依赖)所需的软件包)吗?
答案 0 :(得分:0)
此处编写的所有内容都适用于任何项目配置(是否使用virtualenv)。
此操作的正确策略是拥有多个需求文件。
比方说,您拥有一组适用于所有环境的默认库。
您应该放入common.txt
文件。
让我们说,您还有dev
的两种配置,其中包括调试库,api文档和导航等
另一个是tests
的测试框架覆盖范围之类的东西。
因此,在这种使用情况下,您应该具有:
dev.txt
test.txt
所以现在我们为3个环境(prod,dev,test)提供了3个文件。 dev.txt
和`text.txt的第一行应为:
-r common.txt
现在我们只能安装对该环境重要的需求。
中有一个很好的教程,介绍了如何在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.
如果不清楚,请告诉我。