【问题标题】:Packaging a Python program that needs to a C compiler将需要 C 编译器的 Python 程序打包
【发布时间】:2017-06-01 23:54:30
【问题描述】:

我正在创建和打包一个 Python (2.7) 程序以在 Amazaon WS 上创建一个 Lambda 函数。我拥有的程序依赖于PySha3 package,它本质上是一个围绕优化的 Sha3 C 包的 Python 包装器。 Pysha3 导入一个 C 文件;这两个文件的源码可以在this Github Repository看到。

为了将包导入 Lambda 平台,必须压缩并上传整个文件和所有依赖项。当我这样做并在上传后尝试测试包时,我收到一个错误,即找不到从 PySha3 包中包含的 C 文件导入的 Sha3 类。由于我自己的研究和故障排除的结果,我决定在我的程序目录的根目录中安装一个 Pysha3 轮,我相信这是正确的举动。但是,当我这样做时,我收到以下错误:

我真的希望,如果我可以通过安装 C 编译器来正确安装轮子,并且可以以某种方式将 C 编译器与我的程序一起打包,那么 Lambda 就可以工作。我找到了this compiler for Python,我希望安装它可以在本地修复我的错误,也许将它包含在 zip 文件中可以修复 Lambda AWS 上的错误。

所以,我的问题是,我的思考过程似乎有效吗?同样,关于如何将编译器包含在压缩文件中以便实际使用的任何提示/指导?我对这一切都很陌生,所以任何事情都会有所帮助。非常感谢!

【问题讨论】:

    标签: python amazon-web-services aws-lambda packaging python-packaging


    【解决方案1】:

    为了为 Lambda 打包二进制文件,您需要在正确的环境中构建任何本机代码。您似乎正在尝试在 Windows 机器上构建 - 即使您的构建成功,生成的二进制文件也不适合 Lambda 执行环境。

    Lambda Execution Environment 指南中记录了当前支持的环境,该指南还指出:

    如果您在代码中使用任何本机二进制文件,请确保它们是在此环境中编译的。

    【讨论】:

    • 非常感谢您提供此信息 - 我将尝试从这里解决!
    • 我从软件包站点 (pypi.python.org/pypi/pysha3) 获取编译后的二进制文件,在我的 Windows PC 上用 7z 解压缩,然后将编译后的二进制文件添加到我的项目目录中。使用已编译的 Linux 二进制文件上传压缩的项目目录即可!我用的是pysha3-1.0.2-cp27-cp27m-manylinux1_x86_64.whl
    猜你喜欢
    • 2016-12-07
    • 2011-01-03
    • 2014-09-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多