我有一个Python 3项目,我正试图通过AWS Codestar将其部署到AWS Lambda-
我的项目(实际上只是由一个简单的API网关处理程序方法组成)导入了一个Python3(需要3)项目(报纸)。我使用的是VirtualNV15.1。在我的家用计算机上安装0,如果我使用Python 3.5安装报纸,然后上传到Lambda(Python 3.6运行时),它会抛出与PIL/Pillow相关的错误。
首先,它说它找不到_image,这似乎是通过删除站点包中的PIL目录来解决的,但是这只会导致它抛出找不到PIL的错误。
然而,如果我用Python 3.6构建,然后上传到Lambda,它就可以正常工作(无论我是否删除PIL)。
所以,在我看来,我不能用3.5安装报纸,并尝试在3.6运行时执行。
所以,现在我正试图通过Codesar进行部署,但是Codesar似乎默认为aws/codebuild/eb-nodejs-4.4.6-amazonlinux-64:2.1.3,即使是Python项目,而且它在Yum存储库中似乎只有Python 3.5,当然Lambda只有3.6运行时。
即使我在代码构建本身中切换图像,似乎也没有任何使用Python3构建的图像。6运行时(根据文档)。甚至Docker图像似乎也缺少Python3.6。
因此,我试图在buildspec的安装阶段在Codebuild中安装Python 3.6。yml文件,但是我在安装后找不到python3*可执行文件。
我唯一能想到的另一件事是创建Codesar项目,编辑codebuild以使用Ubuntu,然后安装所有东西(就像我在本地做的那样),但是在Codesar内部没有办法做到这一点,我觉得这可能会让我失望兔子洞,这很难自动化。有没有办法在我的项目中将该配置作为代码?
编辑试图从源代码构建和安装Python 3.6作品,但当试图安装Pip,我得到的错误说SSL没有安装。当回顾构建日志时,似乎也没有安装其他“位”。
所以,我的问题是:
为其他人编辑1,我的完整buildspec。yml用于安装和使用Python3。6在下面。注意,为了减少日志消息、降低Cloudwatch成本并加快进程,它尽可能保持一切安静。我通过这样做(安装Python并构建我的应用程序),最终在整个过程中节省了大约90秒。因为代码构建是基于所花费的时间收费的,所以这是至关重要的。
version: 0.2
phases:
install:
commands:
- yum -qye 0 update
- yum -qye 0 groupinstall development
- yum -y install python-devel
- yum -qye 0 install libxml2-devel libxslt-devel libjpeg-devel zlib-devel libpng-devel openssl-devel sqlite-devel
- export HOME_DIR=`pwd`
# I would recommend hosting the tarball in an uncompressed format on S3 in order to speed up the download and decompression
- wget --no-verbose https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
- tar -xzf Python-3.6.1.tgz
- cd Python-3.6.1
- ./configure -q --enable-loadable-sqlite-extensions
- make --silent -j2
- make altinstall --silent
- cd $HOME_DIR
- rm Python-3.6.1.tgz
- rm -rf Python-3.6.1/
- ln -s /usr/local/bin/python3.6 /usr/bin/python3
- python3 -m pip install virtualenv
- pip3 install -U nltk
pre_build:
commands:
- cd $HOME_DIR
# Start a virtualenv and activate
- virtualenv -p /usr/bin/python3 $VIRTUAL_ENV_DIR_NAME
- source $VIRTUAL_ENV_DIR_NAME/bin/activate
- $VIRTUAL_ENV_DIR_NAME/bin/pip3.6 install nltk
# If you plan to use any separate resources on Codecommit, you need to configure git
- git config --global credential.helper '!aws codecommit credential-helper $@'
- git config --global credential.UseHttpPath true
# git clone whatever you need
build:
commands:
- cd $HOME_DIR
- mv $VIRTUAL_ENV/lib/python3.6/site-packages/* .
- aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.json
artifacts:
type: zip
files:
- template-export.json
它也可以将CodeBuild指向dockerhub上的图像。从文档:
要使用其他Docker映像,请选择“指定Docker映像”。对于自定义图像类型,请选择其他或Amazon ECR。如果选择“其他”,则对于“自定义图像ID”,请在Docker Hub中键入Docker图像的名称和标记
我已经将我的代码构建项目设置为使用python:3.6-alpine,并且一切正常。。
现在有一个来自AWS的Python3.6的官方Docker图像。您可以使用aws/codebuild/python: 3.6.5
作为您的CodeBuild映像。
这就是我的构建规范。yml看起来像。请注意,python3。6版本在预构建阶段输出。
version: 0.2
phases:
install:
commands:
- yum -y groupinstall development
- yum -y install zlib-devel
- wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
- tar xJf Python-3.6.0.tar.xz
- cd Python-3.6.0
- ./configure
- make
- make install
pre_build:
commands:
- python3 -V
...
另一种方法是上传Python3。6码头工人形象到ECR。您可以设置使用此ECR映像运行生成的选项。
问题内容: 我正在尝试运行以前运行的应用程序。它曾经在Ubuntu和Windows 7上运行。我现在有一台Windows 10计算机,代码失败。可能是因为我现在使用的是python 3.5,尽管坦率地说我不记得我在其他计算机上(不再可用)上的内容。 关键行是: 不久前已从各个地方取消。但是,现在当我运行它时,它会引发错误: 在交互式会话中,似乎是第三行失败了: 我试过了 在命令提示符下,但错误仍然
问题内容: 在有效Java中,Bloch建议使所有字段最终成为使对象不变的对象。 是否有必要这样做?不只是不提供访问器方法就使其不可变。 例如 上述类是不可变的,即使我不申报的吗?我想念什么吗? 问题答案: 除了@Bozho的要点之外,将字段声明为意味着可以安全地访问它而无需任何同步。 相反,如果该字段不是,则存在另一个风险,即如果另一个线程在没有适当同步的情况下访问该字段,则另一个线程将看到该字
我刚刚开始使用Spring,并且已经成功设置并在Eclipse中使用gradle buildship运行RESTful教程。 https://spring.io/guides/gs/rest-service/#initial 然而,有一件事我无法在Eclipse中使用,那就是它说您可以通过以下命令从gradle而不是jar直接运行应用程序: 格拉德勒·布特伦 但bootRun不是gradle脚本创
我正在使用Ubuntu18:04和lxc/lxd蒸汽容器。它工作得很好,我遵循了本教程,并对网络内容做了一些更改。 https://blog.simos.info/running-steam-in-a-lxd-system-container/ 蒸汽适用于opengl游戏,但不适用于沃肯游戏。卢特里斯也一样。 主办方: 集装箱侧: ubuntu@steam:~$vulkaninfo OpenGL工
问题内容: 我得到了这个,我期望它在打印x.withdraw()时能打印410。 这是我的代码: 我是否需要在类本身中修复某些问题,或者我的方法调用有问题? 问题答案: 您在实例上设置具有相同名称的属性: 您正在尝试调用的是该属性,而不是方法。Python不会区分方法和属性,它们也不位于单独的命名空间中。 为属性使用其他名称;(退出的过去时)作为更好的属性名称浮现在脑海: (我也纠正了一个错字;您
问题 当您在 Adobe Photoshop 中尝试对一个较大的图像使用挤压、球面化、旋转扭曲或水波扭曲滤镜时,这些滤镜会变暗(不可用)。 解决方案 减小图像的像素大小。 其他信息 这些滤镜都有图像像素大小上限: 水波: 8000 x 8000 挤压: 11500 x 11500 球面化: 11500 x 11500 旋转扭曲: 11500 x 11500