1

我正在将一些 python 脚本部署为 Azure Web Jobs,但在导入一些共享模块(以 zip 文件的形式)时遇到了问题。如果我将 zip 文件复制到与脚本文件相同的目录,一切正常。但是,如果我将 zip 文件移动到不同的目录,事情就会停止工作。

现在来看看具体情况。

1)这行得通

目录结构:

App_data
  jobs
    continuous
      firstjob
        azure.zip
        job1.py
      secondjob
        azure.zip
        job2.py

在 job1.py(和 job2.py)中,我添加了以下代码:

  sys.path.insert(0, 'azure.zip')
  from azure.storage.blob import *

1)这不起作用

目录结构:

App_data
  pylib
    azure.zip
  jobs
    continuous
      firstjob
        job1.py
      secondjob
        job2.py

在 job1.py(和 job2.py)中,我添加了以下代码: # Azure 将脚本放置在比解决方案中显示的低一级,因此额外的“..”!

  lib_path = os.path.realpath('..\..\..\pylib')
  sys.path.insert(0, os.path.join(lib_path, 'azure.zip'))
  # I verified by printing sys.path that the correct path is added for azure.zip
  from azure.storage.blob import *

这会导致导入错误。有任何想法吗?

4

3 回答 3

0

执行 azure webjob 时,目录的内容会复制到您网站“data”文件夹的临时子目录中(位于根目录 /data)。

如果您将 zip 文件放在与 Python 脚本相同的文件夹中,它也会被复制。如果不是,则需要使用绝对路径“/site/wwwroot/mysite/App_data/pylib/”

那应该工作!

于 2017-03-28T22:30:38.897 回答
0

我试图通过运行下面的代码片段来找出第二份工作出现此问题的原因。

import os
real_path = os.path.realpath('.')
print real_path

real_path当前 webjob 路径变量的结果是D:\local\Temp\jobs\continuous\second\<a generated name like vjvunhav.obn>\.

笔记

请参阅Wiki-Doc部分LoggingWeb Jobs以了解WebJobs - Console.Out and Console.Error.

所以你可以尝试/Home/site/wwwroot/App_Data/pylib/azure.zip在下面的代码中直接使用绝对路径。

import sys
sys.path.insert(0, '/Home/site/wwwroot/App_Data/pylib/azure.zip')

此致。

于 2016-02-01T09:27:16.307 回答
0

我在本地使用 pycharm 测试了你上面的代码。第二个代码也可以很好地工作。我正在使用python3.5.0。我不确定为什么会出现错误。可能是 Azure 中 python 版本的问题。希望这对其他人有帮助。

于 2016-02-01T03:50:20.540 回答