如何在Windows计算机上安装Linux软件包(针对AWS Lambda)?

2024-04-29 05:11:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写Python AWS Lambda脚本。Python代码在Windows本地工作,但它使用的是通过pip安装的Windows软件包。上传到AWS Lambda时,我需要包括Linux软件包

例如,当我运行pip install pandas时,我得到:

Downloading pandas-1.0.1-cp37-cp37m-win_amd64.whl

但我需要(上传到AWS Lambda)的是:

pandas-1.0.1-cp37-cp37m-manylinux1_x86_64.whl

我的尝试

我曾尝试使用Docker在Windows中模拟Linux环境。我的想法是在Docker中安装Linux软件包,然后将它们复制到本地机器上。我认为这可以通过Docker卷来实现。我已尝试使用Dockerfile执行此操作:

FROM python:3.7-slim-buster

WORKDIR /usr/src/app

# Download python packages to /usr/src/app/lib
RUN mkdir -p /usr/src/app/lib
RUN pip3 install pandas -t /usr/src/app/lib

# Copy the python pacakges to local machine
VOLUME host:/myvol
RUN mkdir /myvol
COPY /usr/src/app/lib /myvol

但是当我运行docker build时,我得到了一个错误:

COPY failed: stat /var/lib/docker/tmp/docker-builder233015161/usr/src/app/lib: no such file or directory


Tags: installpiplambdadockerrunsrcawsapp
1条回答
网友
1楼 · 发布于 2024-04-29 05:11:03

多亏了explanation from @C.Nivs,这可以使用Docker以交互方式完成:

  1. 首先与docker run -it python:3.6-slim bash交互运行docker。然后创建一个文件夹“target”,并将pip安装到其中(这将安装linux软件包)。记下容器id(我的命令行显示root@31d9be68deec:/#。容器id为31d9be68deec
mkdir /target 
pip install pandas -t /target
  1. 然后打开一个新的命令提示符,并使用docker cp将文件从容器复制到本地。以下文件将从容器中的target文件夹复制到本地文件夹libs
docker cp <container_id>:/target libs

就这样。python包现在可以在本地文件夹libs中找到

@C.Nivs中的注释:“复制并不做它的名字可能暗示的事情。复制是一个构建步骤,它将文件从构建上下文(正在构建映像的地方)复制到映像本身。它不允许事情以相反的方式进行”

相关问题 更多 >