簡體   English   中英

Python:如何從其他目錄導入zip

[英]Python: How to import zip from a different directory

我正在將一些python腳本部署為Azure Web作業,並在導入一些共享模塊(以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 *

這會導致導入錯誤。 有任何想法嗎?

我在上面使用pycharm在本地測試了您的代碼。 第二個代碼也可以很好地工作。 我正在使用python3.5.0。 我不確定為什么會出現錯誤。 也許是Azure中python版本的問題。 希望這對其他人有幫助。

我試圖通過運行下面的代碼片段找出第二項工作的原因。

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

當前Web作業路徑的變量real_path的結果為D:\\local\\Temp\\jobs\\continuous\\second\\<a generated name like vjvunhav.obn>\\

注意

請參閱Logging 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')

最好的祝福。

當執行天藍色的webjob時,目錄的內容將復制到您網站的“數據”文件夾的臨時子目錄中(位於/ data根目錄)。

如果您將zip文件放在與Python腳本相同的文件夾中,它也會被復制。 如果不是,則需要使用絕對路徑“ / site / wwwroot / mysite / App_data / pylib /”

那應該工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM