Python:如何从不同的目录导入zip

时间:2016-01-31 02:52:48

标签: python azure import webjob

我正在部署一些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)中,我添加以下代码:   #Acean将脚本放在比解决方案中显示的级别低一级的位置,因此额外的' ..'!

  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 *

这会导致导入错误。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

  

注意

     

请参阅the section Logging of Wiki-Doc Web 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')

最诚挚的问候。

答案 2 :(得分:0)

执行azure webjob时,目录的内容将复制到网站“data”文件夹的temp子目录中(在根/数据处)。

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

这应该有用!