将Python Pipenv项目打包成AWS Lambda可用的程序包。

10

我有一个Python项目,正在使用pipenv处理依赖关系。

我需要创建一个zip文件,其中包括源代码和所有依赖代码。 我需要此zip文件将其上传到AWS Lambda。

使用pipenv工作时,它会在计算机的某个位置下载依赖库,但是为了打包/分发项目,我需要将所有必要的代码包含在同一位置(即zip文件)中。

有没有办法运行pipenv并将其设置为在特定路径上安装依赖项? 如果不行,是否有人知道这些依赖项在我的计算机上的位置?

谢谢

1个回答

18

这个对我起作用:

#!/bin/bash

# this is b/c pipenv stores the virtual env in a different
# directory so we need to get the path to it
SITE_PACKAGES=$(pipenv --venv)/lib/python3.6/site-packages
echo "Library Location: $SITE_PACKAGES"
DIR=$(pwd)

# Make sure pipenv is good to go
echo "Do fresh install to make sure everything is there"
pipenv install

cd $SITE_PACKAGES
zip -r9 $DIR/package.zip *

cd $DIR
zip -g package.zip posts.py

我已经专门尝试了它,使用numpy时它能够正常工作。它还包括了.so文件,这很棒,因为一切都是自包含的。


1
这将打包SITE_PACKAGES下的所有软件包。最终的zip文件可能包含许多未使用的软件包吗? - Linden X. Quan
2
不行,因为SITE_PACKAGES是特定于Pipenv的,所以它只会安装您的Pipenv环境所需的软件包/依赖项。 - Kenny Worden

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