Flask(2): 在windows系统上部署项目2

4 创建并激活虚拟环境

虚拟环境非常有用,可以将多个项目隔离开来。根据我看的教程,貌似以前有多种创建方式,后来官方自带了。目前我就用官方的方式。

4.1 创建虚拟环境

创建部署文件夹(假如目录为d:\project01),在命令提示符中定位到该目录中,执行如下命令:

复制代码
python -m venv .venv

这里最后的".venv"是我设置的虚拟环境名称,可以根据自己的习惯改成其他的。命令运行后会在项目文件夹下创建和虚拟环境同名的文件夹。

4.2 激活虚拟环境

运行如下命令激活虚拟环境(以我的情况为例,其实就是运行.venv\scripts目录下的activate.bat批处理文件):

复制代码
.venv\scripts\activate

成功后将会发现前面多了一些字符:括号里包含了虚拟环境的名称。这时就可以执行python程序或使用pip管理包了。

还可以运行"deactivate"命令退出虚拟环境。

5 安装依赖

在虚拟环境里执行"pip list"命令可以查看该虚拟环境下已经安装的包。

在源代码的虚拟环境里(我使用pycharm,会自动帮我激活虚拟环境,无需手动)执行"pip freeze > requirements.txt"命令来生成requirements.txt, 将该文件复制到要部署的目录下,执行"pip install -r requirements.txt"命令来批量安装依赖的模块。

虽然比复制虚拟环境多了安装过程,但是比较可靠。特别要注意的是将镜像源换成国内的,否则安装很慢。比如使用阿里云的镜像源,只要在刚才pip install命令后面再加上"-i https://mirrors.aliyun.com/pypi/simple/"。

6 复制代码并改变设置

将源代码复制过去,不要复制虚拟环境。

后续的项目维护上,我使用文件同步软件来更新程序文件。这类软件可以自动识别有变动的文件,然后上传到服务器上。为了防止这种方法有什么隐患,目前我是在升级前备份下生产环境。

7 运行项目

目前我对wsgi,web服务器,应用服务器,nginx等分别有什么用理解的还不够,只能依葫芦画瓢。

我的程序入口是main.py

python 复制代码
from app import create_app
from server import server


app = create_app()  # 目前使用bat文件设置使用哪个配置, 这里不要传入参数

if __name__ == '__main__':
    server(app)

为了使用tornado,又加了一个server.py

python 复制代码
from tornado.httpserver import HTTPServer
from tornado.wsgi import WSGIContainer
from tornado.ioloop import IOLoop


def server(app, port=9900):
    s = HTTPServer(WSGIContainer(app))
    s.listen(port)  # 监听端口
    IOLoop.current().start()

为了简便的运行程序,我在项目文件夹下创建批处理文件start.bat,命令如下:

bash 复制代码
call .venv\scripts\activate
set FLASK_CONFIG=production
python -m main

其中第一行是激活虚拟环境,第二行是设置常量FLASK_CONFIG为生产环境,第三行是运行入口程序。运行后跳出命令提示符窗口,显示系统启动时的日志:

8 后记

以上的要么是网上搜的教程,要么是问的ai,再经过自己的整理、实践,是能用的。但以我这点可怜的经验,肯定还有很大的改进空间,错漏也难免存在,希望能有大佬给出指点,不甚感激; 也希望有和我一样的菜鸟一起探讨,共同学习、进步。

相关推荐
冬天给予的预感1 小时前
DAY 54 Inception网络及其思考
网络·python·深度学习
钢铁男儿1 小时前
PyQt5高级界而控件(容器:装载更多的控件QDockWidget)
数据库·python·qt
亿牛云爬虫专家5 小时前
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
分布式·python·架构·kubernetes·爬虫代理·监测·采集
蹦蹦跳跳真可爱5899 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
nananaij9 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm
雷羿 LexChien10 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
敲键盘的小夜猫10 小时前
LLM复杂记忆存储-多会话隔离案例实战
人工智能·python·langchain
高压锅_122011 小时前
Django Channels WebSocket实时通信实战:从聊天功能到消息推送
python·websocket·django
胖达不服输12 小时前
「日拱一码」020 机器学习——数据处理
人工智能·python·机器学习·数据处理
吴佳浩12 小时前
Python入门指南-番外-LLM-Fingerprint(大语言模型指纹):从技术视角看AI开源生态的边界与挑战
python·llm·mcp