首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用诗歌创建可展开的Python

如何使用诗歌创建可展开的Python
EN

Stack Overflow用户
提问于 2022-11-02 16:19:51
回答 2查看 104关注 0票数 0

我花了几天的时间试图找出如何在使用诗歌的时候最好地构建一个Python Lambda包。我发现了一些博客,它们概述了相同的技术,但在我的情况下不起作用。博客中提供的解决方案是使用pip install将所需的依赖项安装到特定的目录中并将其压缩。

代码语言:javascript
运行
复制
poetry run pip install -t dist/lambda .
cd dist/lambda
zip -r ../lambda.zip .

然而,如果你在诗歌中使用路径依赖,这是行不通的。对于任何本地依赖项,您都会从pip中获得一个错误,说明pip._vendor.pkg_resources.RequirementParseError: Invalid URL:

我确实遇到了诗歌束插件,它看上去很有希望。使用它确实有效,因为它将所需的依赖项和项目本身安装到选定的目标目录中。

代码语言:javascript
运行
复制
poetry self add poetry-plugin-bundle
poetry bundle venv .venv-lambda
cd .venv-lambda/lib/python*/site-packages/
zip -r ../../../../dist/lambda.zip .

这种方法的问题在于它安装的不仅仅是主线依赖项,还包括devtest依赖项。没有选项可以指定要包含或排除哪个依赖项组。有一个具有PR的公开发行正在等待合并以解决这个问题。一旦解决了这一问题,这很可能是理想的解决方案。

在那之前,我需要一些不同的/更好的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-02 16:19:51

最后,我从AWS中找到了这份文件,用于如何从Python虚拟环境中创建lambda存档。使用诗歌的install命令,我能够将主要的运行时依赖项安装到所创建的虚拟环境中,包括任何基于本地路径的依赖项。但是,这并没有安装项目本身,所以在归档之前需要复制源代码。在我的例子中,我使用一个专用的源目录/模块作为代码。

代码语言:javascript
运行
复制
poetry install --only main --sync
mkdir -p dist/lambda-package
cp --recursive .venv/lib/python*/site-packages/* dist/lambda-package/
cp --recursive my_project_source_directory dist/lambda-package/
cd dist/lambda-package
zip -r ../dist/lambda.zip .

上面的命令是我在CI构建中使用的。使用本地.venv目录是因为以下诗词设置virtualenvs.in-project设置为true

要做到这一点,需要做的另一件事是不要使用基于可编辑路径的依赖关系,或者至少在开发期间只在本地这样做。将它们标记为可编辑不会将依赖项安装到虚拟环境中,而是只创建一个指向项目源代码的链接。这将不会在创建zip文件时得到。

这并不完美,因为可能有更多的绑定超出必要,但它确实删除了诗歌插件解决方案中的任何devtest依赖项。另外,因为在我的CI构建服务器上,我在虚拟环境中缓存已安装的依赖项,这意味着在构建结束时,没有任何devtest依赖项在每次运行时被缓存和安装。

我希望这对处于类似情况的其他人有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2022-11-06 19:47:09

我就是这么做的:

代码语言:javascript
运行
复制
rm -rf dist package
poetry install --only main --sync
poetry build
poetry run pip install --upgrade -t package dist/*.whl
cd package; mkdir -p out; zip -r -q out/mylambda.zip . -x '*.pyc'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74292510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档