MacOS下如何用交互模式安装依赖?相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。
依赖工具
- <李>码头工人李> <李>有趣李>
有趣和Fcli工具依赖于码头工人来模拟本地环境。
对于MacOS用户可以使用家酿进行安装:
<代码类=" language-bash ">酿酒桶安装码头工人 啤酒龙头vangie/公式 酿造安装有趣代码>
Windows和Linux用户安装请参考:& lt; https://github.com/aliyun/fun/blob/master/docs/usage/installation.md>
安装好后,记得先执行<代码>有趣配置代码>初始化一下配置。
<强>注意>强,如果你已经安装过了有趣,确保有趣的版本在3.0.0-beta。1以上。
<代码类=" language-bash ">有趣——美元版本 3.0.0-beta。1 代码>
背景
函数计算以Zip压缩文件格式作为约定的交付物,交付物通常包含代码和依赖库文件。这些依赖库文件通常分为系统依赖(使用apt-get包管理安装的库)和语言运行时依赖(使用语言相关的包管理器如npm, pip安装的库)。
系统依赖通常不可移植
通常情况下系统依赖和环境相关,比如我们希望在函数里调用brotli命令解压文件,如果我们在开发机mac上,使用<代码>酿造安装brotli> 代码,安装了brotil命令,然后打包发布到函数计算平台是无法运行的。有时候即使开发机是linux也不一定可以。这是因为通过系统提供的包管理工具安装的可执行程序和动态链接库与系统的类型和版本强相关。不同系统上安装的这些程序和文件不具备可移植性。
语言依赖也存在不可移植的情况
通常情况下语言依赖是平台无关的,比如说使用<代码> npm安装jszip 代码>安装一个nodejs依赖,该依赖可以运行在不同的操作系统和不同的nodejs版本下。语言平台上的依赖通常是可移植的,单也有例外的情况。如:<代码> npm安装node-pty> 代码就是一个存在原生绑定(本机绑定)的例子.node-pty模块安装过程中,依赖一些c/c++代码,这些代码会在安装的过程中进行编译,我们知道c/c++代码虽然也具备平台移植性,但是其编译产物是不可移植的。
DSL脚本的不足有趣
2.0版本支持依赖安装DSL文件fun.yml,有趣。yml为依赖安装提供了批量模式。日常开发提供了一种命令模式,如:<代码>有趣的安装,包装类型pip tensorflow> 代码。在3.0中有趣我们提供了一种全新DSL的文件Funfile.Funfile可以理解为Dockerfile的语法子集,让熟悉码头工人的开发者可以快速上手。
但是无论是有趣的。yml或Funfile,以及命令模式,对于开发者都有一个痛点。那就是不知道环境里当前的状态:
- <李>已经安装的软件有哪些李> <李>某个目录下有些什么文件李> <李>文件的内容以及属性是什么李>
开发者需要可以交互的沙箱环境。该功能在有趣的2.0中没有,用户常常使用<代码> fcli sbox 代码>命令作为替代,或者直接使用fc-docker项目提供的镜像启动一个容器。<代码>码头工人运行——rm - - v (pwd):美元/代码aliyunfc/runtime-python2.7:构建bash 代码>但是这些复杂的命令和参数需要用户具备足够的码头工人背景知识以及对函数计算工作原理的了解。
为了更好的解决上述问题,提升用户的开发体验,我们在玩3.0中提供了<代码>有趣安装sbox 代码>子命令。
命令行参数
<代码类=" language-bash ">有趣的安装sbox——帮助美元 用法:有趣的安装sbox [- f |——功能& lt;[服务/]function>] [- r |——运行时& lt; runtime>] [i |——互动][- e | - env关键=val……][- e | - cmd & lt; cmd>] 启动本地沙箱安装或配置的依赖关系 选项: ,- f,功能& lt;[服务/]function>指定哪个函数来执行安装任务。 ,- r,运行时& lt; runtime>,,,,,,,函数运行时,勾选选择是:nodejs6, nodejs8, nodejs10, python2.7, python3 java8 php7.2,定制 ,我,互动,,,,,,,,,作为交互模式运行。保持STDIN开放和分配一个pseudo-TTY在交互式shell。(默认值:false) ,- e, env & lt; env>,,,,,,,,,,环境变量,前女友。- e路径=/代码/bin(默认值:[]) ,- c, cmd & lt; cmd>,,,,,,,,,,,命令与参数来执行安装盒内。 ,- h,帮助,,,,,,,,,,,,,输出使用信息代码>
快速开始
下面以项目pyzbar_example为例,pyzbar_example项目包含如下文件
<代码类=" language-bash ">,美元树。 . ├──fun.yml ├──index.py ├──qrcode.png └──template.yml 0目录,4文件MacOS下如何用交互模式安装依赖