本文介绍如何通过fun install命令及Funfile文件安装第三方依赖。
注意 本文介绍的内容后期将不再维护。如果您的函数计算资源是使用Funcraft管理的,建议您将资源迁移至Serverless Devs管理。
关于如何将函数计算的相关资源从Funcraft迁移到Serverless Devs进行管理的详细操作,请参见从Funcraft迁移到Serverless Devs。
关于Serverless Devs的详细信息,请参见什么是Serverless Devs。
关于如何使用Serverless Devs安装依赖,请参见多语言安装依赖示例。
由此带来的不便,敬请谅解!
功能介绍
执行以下命令,获取
fun install
命令下的相关功能。fun install -h
预期输出:
Usage: fun install [-f|--function <[service/]function>] [-r|--runtime <runtime>] [-p|--package-type <type>] [--save] [-e|--env key=val ...] [packageNames...]
install dependencies which are described in fun.yml file.
Options:
-f, --function <[service/]function> Specify which function to execute installation task.
-e, --env <env> environment variable, ex. -e PATH=/code/bin (default: [])
-d, --use-docker Use docker container to install function dependencies
-r, --runtime <runtime> function runtime, avaliable choice is: nodejs6, nodejs8, nodejs10,
nodejs12, python2.7, python3, java8, php7.2, dotnetcore2.1, custom
-p, --package-type <type> avaliable package type option: pip, apt, npm.
--save add task to fun.yml file.
--registry <npm-url> Configure npm to use any compatible registry, and even run your own
registry.
--index-url <pip-url> Base URL of Python Package Index (default https://pypi.org/simple). This should point to a repository compliant with PEP 503 (the simple repository API) or a local
directory laid out in the same format.
-h, --help display help for command
Commands:
init initialize fun.yml file.
env print environment varables.
sbox [options] Start a local sandbox for installation dependencies or
configuration
fun install命令安装依赖
操作步骤
在项目目录中执行以下命令,安装Python环境下的pip包。
fun install --runtime python2.7 --package-type pip tensorflow
预期输出:skip pulling image aliyunfc/runtime-python2.7:build-1.2.0...
Task => [UNNAMED]
=> PYTHONUSERBASE=/code/.fun/python pip install --user tensorflow
参数说明如下:
--runtime
:指定运行的环境,您可以按需修改相应的运行环境。如果template.yml里已经声明了运行环境,说明文件已经被初始化,您可以省略该选项。--package-type
:指定安装依赖的类型。tensorflow
:自定义pip包的文件名称,本文以tensorflow
为例。PYTHONUSERBASE=/code/.fun/python pip install --user tensorflow
:命令在FC-Docker提供的容器内部执行,执行的命令会逐行打印出来。注意 APT包依赖的安装方式及其参数和pip包依赖类似,如果您需要安装APT包的依赖,您需要将pip
修改为apt
,APT的包名使用apt-get可以安装的DEB格式的包名即可。
安装结果
pip包安装成功后,项目目录中会生成一个.fun目录。
- .fun/python/bin:可执行文件被放置的目录。
- .fun/python/lib/python2.7/site-packages:库文件放置的目录。
.fun
└── python
├── bin
│ ├── freeze_graph
│ ├── markdown_py
│ ├── pbr
│ ├── saved_model_cli
│ ├── tensorboard
│ ├── tflite_convert
│ ├── toco
│ └── toco_from_protos
└── lib
└── python2.7
└── site-packages
├── tensorboard
├── tensorboard-1.12.2.dist-info
├── tensorflow
├── tensorflow-1.12.0.dist-info
├── termcolor-1.1.0.dist-info
...
与
pip install -t . <package-name>
方式相比,使用fun install
安装文件的优点如下:
- 存放位置更有组织性。
- 依赖文件和代码文件分离开,便于借助OSS或NAS初始化依赖文件。
安装成功后,库文件可能无法被程序找到,您需要自定义环境变量,关于如何配置函数计算的环境变量,请参见环境变量。您也可以执行以下命令获取相应的环境变量。
fun install env
预期输出:
LD_LIBRARY_PATH=/code/.fun/root/usr/local/lib:/code/.fun/root/usr/lib:/code/.fun/root/usr/lib/x86_64-linux-gnu:/code/.fun/root/usr/lib64:/code/.fun/root/lib:/code/.fun/root/lib/x86_64-linux-gnu:/code/.fun/root/python/lib/python2.7/site-packages:/code/.fun/root/python/lib/python3.6/site-packages:/code:/code/lib:/usr/local/lib
PATH=/code/.fun/root/usr/local/bin:/code/.fun/root/usr/local/sbin:/code/.fun/root/usr/bin:/code/.fun/root/usr/sbin:/code/.fun/root/sbin:/code/.fun/root/bin:/code:/code/node_modules/.bin:/code/.fun/python/bin:/code/.fun/node_modules/.bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/sbin:/bin
NODE_PATH=/code/node_modules:/usr/local/lib/node_modules
PYTHONUSERBASE=/code/.fun/python
说明 如果您是使用
fun local
和fun deploy
进行调试和部署时,Funcraft会自动为您配置环境变量,无需手动配置。
(可选)相关操作
- 保存文件
如果您需要将命令永久保存在Funfile文件中。您可以执行以下命令。
fun install --runtime python2.7 --package-type pip --save tensorflow
预期输出:skip pulling image aliyunfc/runtime-python2.7:build-1.2.0... Task => [UNNAMED] => PYTHONUSERBASE=/code/.fun/python pip install --user tensorflow
- 查看日志
如果您需要查看详细日志。您可以执行以下命令。
fun install -v
预期输出:skip pulling image aliyunfc/runtime-python3.6:build-1.2.0... Task => [UNNAMED] => apt-get update (if need) Ign http://mirrors.aliyun.com stretch InRelease Get:1 http://mirrors.aliyun.com stretch-updates InRelease [91.0 kB] Get:2 http://mirrors.aliyun.com stretch-backports InRelease [91.8 kB] Get:3 http://mirrors.aliyun.com stretch/updates InRelease [94.3 kB] Hit http://mirrors.aliyun.com stretch Release.gpg Hit http://mirrors.aliyun.com stretch Release Get:4 http://mirrors.aliyun.com stretch-updates/main Sources [3911 B] ....
更多信息
执行fun install
命令后安装的依赖会被安装到代码目录中,同时您也可以通过fun local
的相关命令进行本地调试,也可以通过fun deploy
一键部署到云端。相关信息,请参见使用fun local进行本地调试及使用fun deploy部署应用。