[英]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-DocWeb 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.