我的目标是运行一个在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的这些东西?
感谢!!!
答案 0 :(得分:4)
看起来你已经知道Azure WebJobs的部署,我提供了以下步骤来展示如何在python脚本中加载外部库。
第1步:
使用 virtualenv 组件在系统中创建一个独立的python运行时环境。如果没有,请先使用命令pip install virtualenv
安装它。
如果您成功安装了它,您可以在 python / Scripts 文件中看到它。
步骤2:运行commad创建独立Python运行时环境
步骤3:然后进入创建目录的脚本文件夹并激活它(此步骤很重要,不要错过)
请不要关闭此命令窗口并使用pip install <your libraryname>
在此命令窗口中下载外部库。
步骤4:将Sample.py统一压缩到一个文件夹中,其中包含您依赖的 Libs / site-packages 文件夹中的libs软件包。
第5步: 在Web应用程序服务中创建webjob并上传zip文件,然后您可以执行Web作业并检查日志
你也可以参考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/