Web Job上的Python库

时间:2017-08-24 11:19:18

标签: python azure azure-webjobs

我的目标是运行一个在Azure WebJob上使用Anaconda库(如Pandas)的python脚本,但似乎无法弄清楚如何加载库。

我首先测试一个简单的azure blob到blob文件副本,该文件副本在本地运行时有效,但遇到错误" ImportError:没有名为' azure'"在WebJob中运行时。

示例代码:

from azure.storage.blob import BlockBlobService
blobAccountName = <name>
blobStorageKey = <key>  
containerName = <containername>
blobService = BlockBlobService(account_name=blobAccountName,
account_key=blobStorageKey)
blobService.set_container_acl(containerName)   
b = blobService.get_blob_to_bytes(containerName, 'file.csv')
blobService.create_blob_from_bytes(containerName, 'file.csv', b.content)

正如您所看到的,我甚至无法运行Azure SDK库...更不用说Anacondas :-(

因此,如果有人可以一步一步指导我,我将不胜感激......

如何运行需要外部库(如Anaconda(甚至Azure SDK))的python脚本。我如何&#34; pip install&#34; WebJob的这些东西?

感谢!!!

2 个答案:

答案 0 :(得分:4)

看起来你已经知道Azure WebJobs的部署,我提供了以下步骤来展示如何在python脚本中加载外部库。

第1步: 使用 virtualenv 组件在系统中创建一个独立的python运行时环境。如果没有,请先使用命令pip install virtualenv安装它。

如果您成功安装了它,您可以在 python / Scripts 文件中看到它。

enter image description here

步骤2:运行commad创建独立Python运行时环境

enter image description here

步骤3:然后进入创建目录的脚本文件夹并激活它(此步骤很重要,不要错过

enter image description here

不要关闭此命令窗口并使用pip install <your libraryname>在此命令窗口中下载外部库。

enter image description here

步骤4:将Sample.py统一压缩到一个文件夹中,其中包含您依赖的 Libs / site-packages 文件夹中的libs软件包。

enter image description here

第5步: 在Web应用程序服务中创建webjob并上传zip文件,然后您可以执行Web作业并检查日志

enter image description here

你也可以参考SO帖子:Options for running Python scripts in Azure

此外,如果您想使用Anaconda中的模块,请单独下载。无需下载整个库。

希望它对你有所帮助。

答案 1 :(得分:0)

您可以将Azure WebJob指向您的主要WebApp环境(及其实际站点包)。这使您可以使用WebApp支持的最新最快的Python版本(现在我的是364x64),比x86中的3.4或2.7好得多。另一个巨大的好处是,您不必维护一组静态地保存在文件中的软件包(这给带有疯狂依赖项(例如psycopg2和pandas)的动态库带来了很多麻烦)。

方法:在您的WebJobs文件中,设置一个运行run.py的.cmd文件,在该.cmd文件中,您只需一行这样的代码即可:

D:\ home \ python364x64 \ python.exe run.py

就是这样!

Azure WebJobs首先查看.cmd文件,然后查看run.py和其他文件。 有关此方法的官方MS帖子,请参见以下链接: https://blogs.msdn.microsoft.com/azureossds/2016/12/09/running-python-webjob-on-azure-app-services-using-non-default-python-version/