打包一个需要C编译器的Python程序

3
我正在创建和打包一个Python (2.7)程序,用于在Amazon WS上创建Lambda函数。我使用的程序依赖于PySha3 package,它基本上是优化的Sha3 C包的Python封装。 Pysha3导入了一个C文件;这两个文件的源代码可以在this Github Repository中看到。
为了将软件包导入Lambda平台,必须将整个文件和所有依赖项压缩并上传。当我这样做并尝试在上传后测试软件包时,我收到一个错误消息,指出从PySha3软件包中包含的C文件导入的Sha3类无法找到。作为我的研究和故障排除的结果,我决定在程序目录的根目录中安装一个Pysha3 wheel,我认为这是正确的步骤。然而,当我这样做时,我会收到下面的错误消息:

enter image description here

我希望如果我通过安装C编译器并将其与我的程序一起打包,就能正确安装轮子,从而使Lambda正常工作。我找到了这个Python编译器,希望在本地安装它可以修复我的错误,并且在压缩文件中包含它可能会修复Lambda AWS上的错误。

那么,我的思路是否正确?另外,有什么提示/指导,以便将编译器包含在压缩文件中,以便实际使用它?我对所有这些都很陌生,因此任何帮助都将有所帮助。非常感谢!

1个回答

2
为了将二进制文件打包到Lambda中,您需要在正确的环境中构建任何本机代码。看起来您正在尝试在Windows机器上构建 - 即使您的构建成功,生成的二进制文件也不适用于Lambda执行环境。
当前支持的环境在Lambda Execution Environment指南中有记录,并且还声明:
如果在您的代码中使用任何本机二进制文件,请确保它们是在此环境中编译的。

非常感谢这些信息 - 我会从这里开始尝试解决问题! - Liv
我从包网站(https://pypi.python.org/pypi/pysha3)获取了编译好的二进制文件,在我的Windows PC上使用7z解压缩,然后将编译好的二进制文件添加到我的项目目录中。 上传带有编译好的Linux二进制文件的压缩项目目录成功了!我使用了pysha3-1.0.2-cp27-cp27m-manylinux1_x86_64.whl。 - Meir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接