在鸿蒙next上运行flask

好久没更,又想折腾,拿到我妈的nova 12升个鸿蒙next试试能不能玩python。

实验环境:

  1. nova12 Ultra星耀版一台,系统为Harmony OS 5.0.1
  2. 任意一台有wifi的手机
  3. 可以联网的路由器wifi

准备工作

1. 安装python编译器

打开 “卓易通”,搜索python编译器

卓易通

python编译器

2. 打开python编译器

python编译器

3. 获取当前python工作路径

输入以下代码捞出python脚本工作路径

import os
print(os.getcwd())
获取脚本工作路径
脚本工作路径

可以看到路径是:
/data/data/coding.yu.pythoncompiler.new/files/home

4. 找python二进制路径

输入以下代码,看看脚本工作路径的父级路径,看到有个PYROOT3,大胆推测python二进制文件就在里面

import subprocess

sc_path = '/data/data/coding.yu.pythoncompiler.new/files/home'

def run(str_in):
    
    p = subprocess.Popen(str_in, shell=True, stdout=subprocess.PIPE)
    out, err = p.communicate()
    print(str(out, 'utf-8'))
    if err:
        print(str(err, 'utf-8'))

def ll(str_in):
    run("ls -la " + str_in)

# 捞父级路径
ll(sc_path + '/../')
捞父级路径
父级路径内容

在追加一行代码看看 '/data/data/coding.yu.pythoncompiler.new/files/PYROOT3' 下面有什么。

ll(sc_path + '/../PYROOT3')

有个bin,毫无疑问,python二进制在里面

PYROOT3
ll(sc_path + '/../PYROOT3/bin')
python3

得到python二进制文件路径是:
/data/data/coding.yu.pythoncompiler.new/files/PYROOT3/bin/python3

5. 封装python和pip,查看pip版本

import subprocess

py3 = '/data/data/coding.yu.pythoncompiler.new/files/PYROOT3/bin/python3'

def run(str_in):
    
    p = subprocess.Popen(str_in, shell=True, stdout=subprocess.PIPE)
    out, err = p.communicate()
    print(str(out, 'utf-8'))
    if err:
        print(str(err, 'utf-8'))

def ll(str_in):
    run("ls -la " + str_in)
 
 # 运行python脚本   
def python(str_in):
   run(py3 + " " + str_in)

# 可以执行pip命令
def pip(str_in):
   run(py3 + " -m " + str_in)

# 安装包
def pip_install(str_in):
   pip("pip install " + str_in)

# 看看pip版本

pip('pip --version')
封装脚本

可以看到python是3.13版本,还是比较新的


python版本

6. 换成清华源

上面的代码追加以下内容,换成清华源(不换源下载慢死),并安装flask,由于我已经装过了,显示不一样

# 换源
pip("pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple")
# 安装flask
pip_install("flask")
换源
安装flask

运行flask

1. 获取服务端地址

两部手机都连接同一个wifi,然后鸿蒙next手机进wifi设置查看信息,记录下ip地址,作为服务端IP,可见服务端IP为:192.168.3.3

服务端ip

2. 启动flask

输入以下代码,host字段填写刚刚的服务端ip,port字段填写5001,表示开启web服务,监听5001端口

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return '欢迎访问鸿蒙next的服务端页面'

if __name__ == '__main__':
    app.run(host='192.168.3.3',port=5001)
flask代码

可以看到flask已经正常启动。如果运行报错了,要看看是不是host填错了ip,实在不行就host改成'0,0,0,0',表示全0监听。

flask启动

注意不要灭屏或跳后台,否则python会被停止。

3. 连接服务端

拿出另外一台手机,打开浏览器,输入地址并访问:192.168.3.3:5001,可以看到已经连接上服务端(鸿蒙next手机),并显示出页面。

客户端:


客户端

服务端:


服务端

好,大功告成!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容