[Python]Mac+VSCode+Python之Flash、Flask-SocketIO初探
目录一、Mac搭建python开发环境1、更新Python版本到最新二、配置VSCode1、安装VSCode Python插件2、写helloworld3、Flash、Flask-SocketIO初探1)什么是Flask?2)Flash的简单Demo3)什么是Flask-SocketIO?4)Flask-SocketIO的简单Demo一、Mac搭建python开发环境Mac系统自带的Python版
目录
一、Mac搭建python开发环境
Mac系统自带的Python版本为:Python 2.7.16,目录位于:/usr/bin/python
1、更新Python版本到最新
官网下载python安装包
https://www.python.org/downloads/
最新版为:Python 3.9.2,下载到本地后直接安装。
直接安装:
安装完后查看Python版本时,发现还是:Python 2.7.16
原因为:Python 3.9.2的默认安装目录为:/usr/local/bin/python3
可以通过修改/Users/lijing/.bash_profile文件生效(PS:由于后续通过VSCode虚拟环境开发,这个地方也可以不修改)。
修改方法如下:
在.bash_profile文件最后添加:
alias python="/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9"
source ~/.bash_profile生效后。
查看Python版本:
搞定。
二、配置VSCode
1、安装VSCode Python插件
2、写helloworld
新建个文件夹:phello,在里面新建个文件:hello.py
输入代码:print(‘Hello, world!’)
3、配置 Python 解释器
点击状态栏左下角的 Python 图标进行配置,选择最新安装的版本。
shift+enter 运行:
4、Flash、Flask-SocketIO初探
1)什么是Flask?
Flask是一个使用 Python 编写的轻量级Web应用框架。(https://github.com/pallets/flask)
安装 Flask 最便捷的方式是使用虚拟环境。
虚拟环境是Python解释器的一个私有副本,在这个环境中你可以安装私有包,这些包不会影响系统中安装的全局Python解释器。(PS:虚拟环境可以避免系统中的Python包的混乱和版本的冲突。)
2)Flash的简单Demo
先创建一个项目文件夹,如:hello_flask。
使用VSCode打开这个项目文件夹。
打开终端,创建虚拟环境:
python3 -m venv env
选择Python解释器
打开查看/命令面板(View > Command Palette),选择解释器。
选择刚才创建的虚拟环境env对应的Python版本。
选中后,左下角的效果:
安装或更新pip:
python -m pip install --upgrade pip
安装Flash:
python -m pip install flask
新建文件app.py
输入代码:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "Hello, Flask!"
运行代码:
python -m flask run
浏览器打开URL:http://127.0.0.1:5000
成功。
参考:官方文档:tutorial-flask
3)什么是Flask-SocketIO?
Flask-SocketIO是Flask对WebSocket支持的封装库,能比较方便地实现数据的实时显示。(https://github.com/miguelgrinberg/Flask-SocketIO)
安装Flask-SocketIO:
python -m pip install flask-socketio
4)Flask-SocketIO的简单Demo
参考别人的例子,简单写个每5秒从1到100里面随机生成一个数字显示在页面的Demo。
首先,看下Flask的目录结构:
html文件放templates文件夹。
静态文件放static文件夹。
.py文件放最外面或新建个views文件夹放入。
Demo目录结构如下:
app.py代码如下:
from flask import Flask, render_template
from flask_socketio import SocketIO,emit
from threading import Lock
import random
async_mode = None
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
thread = None
thread_lock = Lock()
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('connect', namespace='/test_conn')
def test_connect():
global thread
with thread_lock:
if thread is None:
thread = socketio.start_background_task(target=background_thread)
def background_thread():
while True:
socketio.sleep(5)
t = random.randint(1, 100)
socketio.emit('server_response',
{'data': t},namespace='/test_conn')
if __name__ == '__main__':
socketio.run(app, debug=True)
index.html的代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="/static/jquery.js"></script>
<script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/socket.io/4.0.0/socket.io.min.js"></script>
</head>
<body>
<h1 id="t"></h1>
<script type="text/javascript">
$(document).ready(function() {
namespace = '/test_conn';
var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);
socket.on('server_response', function(res) {
console.log(res.data);
$('#t').text(res.data);
});
});
</script>
</body>
</html>
运行代码:
python -m flask run
浏览器打开URL:http://127.0.0.1:5000
运行结果如下图:
搞定。
代码如下:Mac+VSCode+Python之Flash初探DEMO源码。
PS:flask官方文档。
更多推荐
所有评论(0)