gpt4 book ai didi

python - 捆绑 pdflatex 以在带有自定义 AMI 图像的 AWS Lambda 上运行

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:19 25 4
gpt4 key购买 nike

我的目标是创建一个 Amazon Lambda 函数,通过 python 使用 pdflatex 工具将 .tex 文件编译成 .pdf。

我已经使用 Amazon 的 AMI 构建了一个 EC2 实例,并使用 yum 安装了 pdflatex:

yum 安装 texlive-collection-latex.noarch

这样,我可以使用 pdflatex 并且我的 python 代码可以正常工作,按照我想要的方式将我的 .tex 编译成 .pdf。

现在,我需要创建一个包含 pdflatex 工具的 .zip 文件包; latexcodec(我用过的一个python库,这个没问题);和我的 python 文件:处理程序(lambda 函数处理程序)和工作程序(编译我的 .tex 文件)。

这个包是将我的代码和库上传到 Amazon Lambda 所需的部署包。

问题是:pdflatex 有很多依赖项,我必须将所有内容集中在一个地方。我找到了一个为我做的脚本:

http://www.metashock.de/2012/11/export-binary-with-lib-dependencies/

我已经将我的 PATH 设置为在新目录中找到 pdflatex 二进制文件,这样我就可以使用它,但我遇到了一个问题:pdflatex 找不到一些依赖项。我能够通过将环境变量设置为脚本将所有内容移动到的文件夹来修复它:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/ec2-user/lambda/local/lib64:/home/ec2-user/lambda/local/usr/lib64"

此时,我通过 bash 直接运行 pdflatex。但是我的 python 脚本在尝试使用 pdflatex 时引发错误:

mktexfmt: No such file or directory
I can't find the format file `pdflatex.fmt'!

我还可以通过将 pdflatex.fmttexmf.cnf 文件移动到我的 bundle 文件夹并设置一些环境变量来解决这个问题:

export TEXFORMATS=/home/ec2-user/lambda/local/usr/bin

现在,我当前的问题是,python 脚本不断抛出以下错误:

---! /home/ec2-user/lambda/local/usr/bin/pdflatex.fmt doesn't match pdftex.pool
(Fatal format file error; I'm stymied)

我找到了一些可能的解决方案;删除 .texmf-var 文件夹,在我的例子中,该文件夹不存在;使用 fmtutil,我的 AMI 镜像中没有它...

1 - 我是否遗漏了任何环境变量?

2 - 或者以错误的方式移动我的 pdflatex 二进制文件及其所有依赖项?

3 - 是否有任何正确的方法来移动二进制文件及其所有依赖项,以便它可以在其他机器上使用(考虑环境变量)?

最佳答案

Lambda 环境是一个容器,而不是一个普通的 EC2 实例。您的 .zip 中的所有文件都部署在 /var/task/ 中在容器内。顺便说一句,除了目录 /tmp 之外,所有内容都以只读方式挂载。 .所以,不可能运行 yum ,例如。

对于您的情况,我建议您将二进制文件放入您的 zip 中并在 /var/task/<binary name> 中调用它.请记住将静态编译的二进制文件放在与容器内核兼容的 linux 中。

关于python - 捆绑 pdflatex 以在带有自定义 AMI 图像的 AWS Lambda 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45133085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com