【问题标题】:Serverless Framework - Python and Requirements.txt - remove unnecessary packages无服务器框架 - Python 和 Requirements.txt - 删除不必要的包
【发布时间】:2020-08-26 10:17:41
【问题描述】:

我正在使用 serverless-python-requirements 插件来部署 aws lambda;我使用 pip freeze > requirements.txt 创建了 requirements.txt。但是,requirements.txt 可能包含超出所需的包(用于部署)。

我的问题是: serverless-python-requirements 插件是否可以删除我的 lambda 函数未使用的不必要的包(仅保留直接或间接(依赖项)需要的包)?

【问题讨论】:

  • 简答:NO。长答案:You need to manage your requirements by your self
  • 为什么它比部署所需的多?使用 virtualenv 进行开发,只安装你真正需要的包。
  • @Chris 因为它正在大量开发中,每次我移动/更改导入 我希望不要继续创建新的虚拟环境(也感觉在 21 世纪无服务器/python 可以做一些事情- 在“pipreqs”行中似乎并不难,但更好)。
  • 重开发与什么有什么关系? AWS Serverless 与定义和管理依赖项的方式有什么关系?您不是在无服务器架构上开发,是吗?
  • 不是 AWS,但我跟随 slimilar 到 link 将我的烧瓶应用程序转换/部署为 AWS Lambda。我正在使用这个“无服务”软件,如果这让我的问题和担忧更加清晰。

标签: python aws-lambda aws-serverless


【解决方案1】:

这里写的所有内容都适用于任何项目配置(是否使用 virtualenv)。

此操作的正确策略是拥有多个需求文件。

假设您有一组适用于所有环境的默认库。

您应该放入一个common.txt 文件。

假设您还有两个配置,一个用于dev,带有调试库、api 文档和导航等 另一个用于tests,具有测试框架覆盖率之类的东西。

所以在那个用例中你应该有:

dev.txt test.txt

所以现在我们有 3 个文件用于 3 个环境(prod、dev、test)。 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.

如果我不清楚,请告诉我。

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 2018-07-07
    • 1970-01-01
    • 2020-10-01
    • 2020-11-04
    • 2020-08-20
    • 2014-12-03
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多