将外部库添加到动作

时间:2019-01-03 10:53:47

标签: ibm-cloud ibm-cloud-functions

我正在IBM-Clound函数中开发一个动作,该动作在Watson Assistant对话框中调用。该动作必须向WS发出SOAP请求。问题是当我尝试导入suds库时,因为它不在默认的python库中。如何添加库?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用虚拟环境virtualenv打包Python依赖项。例如,虚拟环境允许您链接可以使用pip安装的其他软件包。

要安装依赖项,请将它们打包在虚拟环境中,然后创建兼容的OpenWhisk操作:

创建一个requirements.txt文件,其中包含要安装的pip模块和版本。

安装依赖项并创建一个虚拟环境。虚拟环境目录必须命名为virtualenv。为了确保与OpenWhisk运行时容器兼容,虚拟环境中的软件包安装必须使用与该类型相对应的映像。

对于python:2,请使用docker映像openwhisk / python2action。

对于python:3.6使用docker映像ibmfunctions / action-python-v3.6。

对于python:3.7,请使用docker映像ibmfunctions / action-python-v3.7。

docker run --rm -v "$PWD:/tmp" ibmfunctions/action-python-v3 bash  -c "cd tmp && virtualenv virtualenv && source virtualenv/bin/activate && pip install -r requirements.txt"

打包virtualenv目录和所有其他Python文件。包含入口点的源文件必须命名为 main .py。

 zip -r helloPython.zip virtualenv __main__.py

创建动作helloPython。

ibmcloud fn action create helloPython --kind python-jessie:3 helloPython.zip

有关更多详细信息,请参阅此link