Python学习
一、学前花絮
我们关于python学习方面的文章林林总总已经100多篇了,涉及各个方面。而从之前的文章学习华为的仓颉语言的时候,我们被迫安装了虚拟机,因为网络上的学习路径认为python与仓颉只有在linux下才可以,而windows下安装wsl又因为某个更新包未成功。最后的解决方案是安装虚拟机+ubuntu获得linux环境。
而正如上篇文章所说的,费了14个小时,还是未能让python与仓颉互相调用成功。这也说明了国产计算机语言的生态很严峻。那么虚拟机+ubuntu是无辜的,它可不能因为这件事未成功而荒废。基于之前很多年对企业服务器操作系统linux的认识,它要比windows系统更适合做后台服务器。那么我们就因地制宜在虚拟机上做些事情吧!
如果你还在为学Python时弄乱系统而烦恼?一台虚拟机,就能让你拥有独立、可回滚、可联网的“学习实验室”。
二、用虚拟化平台搭建python学习网站
2.1 为什么Python学习需要虚拟化?
很多Python初学者都会遇到这样的困境:
l想装个Flask练手,又怕把系统环境搞乱
l想模拟真实的Web部署环境(Nginx + uWSGI + MySQL),但手头只有一台Windows电脑
l想试试不同Python版本的项目,切换起来麻烦
虚拟化平台(如VirtualBox、VMware)就是解决这些问题的最佳工具。它让你在一台物理机上,跑起多台“虚拟电脑”,每台都可以安装不同的操作系统和软件,互相隔离,互不影响。
对于Python学习者,虚拟化意味着:
隔离:随便折腾Python环境,系统乱了就删掉重建,物理机安然无恙
仿真:在虚拟机里搭建服务器环境,用Windows浏览器访问,体验真实的Web开发流程
快照:装好一套环境后拍个快照,以后随时回到完美状态
今天,我们就用VirtualBox + Ubuntu,搭建一个完整的Python Web服务,并通过Windows浏览器访问——全程只需30分钟。
2.2 准备工作
物理机:Windows 10/11(已安装VirtualBox)
虚拟机:Ubuntu 22.04(网络模式设置为桥接网卡,这样虚拟机和物理机在同一局域网,可以互相访问)
基础软件:Python 3、pip、nginx(将在虚拟机内安装)
如果还没有Ubuntu虚拟机,可以参考之前的文章快速创建。
2.3 动手搭建:从零到可访问的Web服务
1. 在虚拟机中安装必要软件
打开Ubuntu终端,执行:
2. 编写一个最简单的Flask应用
创建项目目录和文件:
输入以下代码:
按 Ctrl+X 保存退出。
3. 测试Flask应用
此时Flask会在虚拟机内监听5000端口。在虚拟机内打开浏览器访问 http://127.0.0.1:5000 应该能看到页面。按 Ctrl+C 停止。
4. 配置Nginx作为反向代理
Flask自带的服务器不适合生产环境,我们用Nginx来代理:
写入文件内容:
启用配置并重启Nginx:
5. 让Flask在后台运行
6. 在Windows浏览器中访问
查看Ubuntu虚拟机的IP地址:ip addr show(通常类似 192.168.x.xxx)
dev@ubuntu-dev:~/app_install$ ip addr show 1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00 inet127.0.0.1/8 scope host lo valid_lftforever preferred_lft forever inet6::1/128 scope host valid_lftforever preferred_lft forever 2: enp0s3:mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether08:00:27:d4:aa:77 brd ff:ff:ff:ff:ff:ff inet192.168.5.228/24 brd 192.168.5.255 scope global dynamic noprefixroute enp0s3 valid_lft84603sec preferred_lft 84603sec inet6fe80::c7c0:e848:45a8:7a90/64 scope link noprefixroute valid_lftforever preferred_lft forever |
以上实测,192.168.5.228为虚拟机的ip地址。
在Windows浏览器输入:http://192.168.5.228
页面如下:
大功告成! 我们在虚拟机里成功搭建了一个Web服务,并通过物理机访问。这就是典型的“客户端-服务器”模型——虚拟机充当服务器,Windows是你的开发机/客户端。
2.4 虚拟化带来的三大学习红利
1. 零成本试错
想试试用Django替代Flask?直接在虚拟机里 pip install django,新建项目,改Nginx配置——搞砸了?删掉整个项目重来,或者直接恢复到之前的快照,物理机毫发无损。
2. 模拟真实部署环境
公司里的生产服务器大多是Linux,通过虚拟机提前熟悉Linux命令、Nginx配置、防火墙设置,能让你在工作中更快上手。
3. 多版本并存
需要同时维护Python 3.7和3.10的项目?开两个虚拟机,各装一个版本,需要哪个启动哪个,环境永不冲突。
2.5 进阶玩法:把虚拟机变成你的“私有云”
当你熟悉了基础搭建后,可以尝试:
数据库:在虚拟机里安装MySQL/PostgreSQL,让Flask应用连接数据库
域名:修改Windows的hosts文件,给虚拟机IP配个假域名(如 myweb.local)
HTTPS:用 mkcert 生成自签名证书,配置Nginx启用HTTPS
自动化部署:写一个简单的shell脚本,一键拉取代码、重启服务
这些都是在实际开发中必用的技能,而虚拟机就是你最安全、最廉价的练兵场。
三、小结
很多人觉得虚拟化是运维的事,跟Python开发无关。但通过今天的实践,我们感受到:虚拟机就是个人开发者的“私有云”——它让你在一台电脑上体验完整的服务器环境,学习网络配置、系统管理,同时又不影响日常使用。
让我们保持学习热情,多做练习。我们下期再见!