程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

脫離HaaS Studio調試老版本HaaS100 Python輕應用項目

編輯:Python

HaaS官方在HaaS Studio 2.0之後移除了對HaaS100的支持,除了API的大幅改動,原有的HaaS100項目代碼也不能從HaaS Studio 2.0以上的版本部署上傳到板子了。新項目也不建議使用HaaS100,本文只是作為一個記錄,以免以後浪費時間。畢竟手裡還有3塊HaaS100開發板…

由於一些原因我還需要使用HaaS100臨時做一個東西,所以如何在這種情況下將代碼部署到板子上去就是個問題。

首先直接在HaaS Studio 2.0+版本打開舊項目上傳是不行的。於是我將HaaS Studio 回退到當時創建項目的舊版本,然後從舊版HaaS Studio創建新項目,將原先的代碼復制粘貼到新項目中,從HaaS Studio底部快捷工具欄點擊上傳的時候還是一堆報錯。

然後我想到舊項目開發的時候,我為了提高效率實際上做了幾個命令行alias來實現代碼的打包上傳。於是找出了當時的alias,解決了代碼打包上傳到HaaS100的問題。

首先我們要分析一下HaaS100 Python輕應用項目代碼部署的大致流程。這個流程實際上可以從舊版的HaaS Studio終端窗口看到。基本上是如下的流程:

  • 激活miniconda的虛擬環境
  • 項目文件打包到upgrade/pyamp.zip
  • 通過.utility/python/transymodem.py腳本將pyamp.zip傳輸到板子上

下面我們手動來完成這幾個步驟:

  1. 激活miniconda虛擬環境:
    新建一個終端窗口,輸入如下命令:
source ~/.aliot/miniconda3/bin/activate ~/.aliot/miniconda3/envs/_aos_env ; export PATH="~/.aliot/miniconda3/envs/_aos_env:~/.aliot/miniconda3/envs/_aos_env/bin:$PATH" ; echo "=> set miniconda env finished."
  1. 打包文件
    我創建了一個python腳本pack.py,只需要python pack.py 項目名稱即可完成打包,腳本內項目文件夾需要自行修改,你也可以自行修改代碼,把參數修改為項目絕對路徑。
    其中對音頻資源文件的處理請酌情根據情況自行修改。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os,sys,time
from zipfile import *
import zipfile
filepath = '~/haas100/upgrade/pyamp.zip'
filepath = os.path.expanduser(filepath)
if os.path.exists(filepath):
os.remove(filepath)
print('刪除舊文件')
project_name = sys.argv[1]
startdir = "~/haas100/solutions/{}".format(project_name)
startdir = os.path.expanduser(startdir)
print('打包文件 %s'%startdir)
def packfile():
global startdir
f = zipfile.ZipFile(filepath,'w',zipfile.ZIP_DEFLATED)
for dirpath, dirnames, filenames in os.walk(startdir):
for filename in filenames:
if (filename == 'main.py' or filename == 'board.json'):
f.write(os.path.join(dirpath, filename), arcname=filename)
if (filename == "connected.wav" or filename == "poweron.wav" or filename == "aliyunconnected.mp3"):
f.write(os.path.join(dirpath, filename), arcname='resource/{}'.format(filename))
f.close()
def zipDir(dirpath,outFullName):
zip = zipfile.ZipFile(outFullName,"w",zipfile.ZIP_DEFLATED)
for path,dirnames,filenames in os.walk(dirpath):
# 去掉目標跟路徑,只對目標文件夾下邊的文件及文件夾進行壓縮
fpath = path.replace(dirpath,'')
for filename in filenames:
if (filename == 'main.py' or filename == 'board.json' or filename == "connected.wav" or filename == "poweron.wav" or filename == "aliyunconnected.mp3"):
zip.write(os.path.join(path,filename),os.path.join(fpath,filename))
zip.close()
def TimeStampToTime(timestamp):
timeStruct = time.localtime(timestamp)
return time.strftime('%Y-%m-%d %H:%M:%S',timeStruct)
def get_FileSize(filePath):
# filePath = filePath.encode('UTF-8')
fsize = os.path.getsize(filePath)
print('fsize:%d'%fsize)
fsize = fsize/float(1024)
return round(fsize,2)
def get_FileCreateTime(filePath):
# filePath = filePath.encode('UTF-8')
t = os.path.getctime(filePath)
return TimeStampToTime(t)
#輸出文件的基本信息
packfile()
print('文件路徑:',filepath)
print("文件大小:%d KB"%get_FileSize(filepath),end=' ')
print("創建
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved