Ubuntu 上发布 Python 应用:Web 部署与桌面打包两条路线讲清楚
时间:2026-08-25 | 作者:骑光打字机 | 阅读:0先说几个关键点。Ubuntu下做Python应用的发布,其实主要分两条路:一是把Web应用(Flask、Django这类)部署到服务器上;二是把脚本打包成能直接双击运行的桌面可执行文件。这两条路的技术栈完全不同,下面逐个拆解。
一、Web应用部署:Flask/Django上生产环境
1. 准备工作
首先得把基础环境搭好。Ubuntu系统上,Python 3、pip、git这些是标配,一条命令就能搞定:
sudo apt update && sudo apt install python3 python3-pip git -y
虚拟环境这一步建议别跳过。虚拟环境干什么用?隔离依赖,避免版本冲突,这几乎是每个Python项目落地的第一步:
sudo apt install python3-venv -y
python3 -m venv myenv
source myenv/bin/activate
激活后,终端提示符会变成(myenv),说明环境已经生效。
2. 上传代码与安装依赖
代码怎么传?两种常用方式:如果项目托管在GitHub或Gitee,直接用git clone拉下来;如果是本地项目,用scp传上去:
git clone https://github.com/your-username/your-webapp.git
# 或者
scp -r /local/path/to/project username@server_ip:/remote/path
依赖安装靠requirements.txt。这个文件怎么来的?在本地开发时用pip freeze > requirements.txt生成就行。到了服务器上,一条命令装所有依赖:
pip install -r requirements.txt
3. 运行应用
这里有个重要区别:开发时可以用Python内置的服务器,但生产环境必须用WSGI服务器。Gunicorn是业界常用选择:
pip install gunicorn
gunicorn --bind 0.0.0.0:8000 app:app
上面这条命令,假设你的入口文件是app.py,应用对象是app(Flask)或application(Django)。绑定到8000端口,所有IP都可以访问。
然后还需要一个反向袋里。Nginx在这里扮演的角色是接收HTTP请求,再转发给Gunicorn:
sudo apt install nginx -y
sudo nano /etc/nginx/sites-a vailable/yourapp
配置文件里写这几行:
server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
最后别忘了启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-a vailable/yourapp /etc/nginx/sites-enabled/
sudo systemctl restart nginx
4. 设置开机自启
这一步属于“锦上添花但建议加上”。用systemd创建服务,确保服务器重启后应用自动跑起来:
sudo nano /etc/systemd/system/my_python_service.service
内容如下:
[Unit]
Description=My Python Web Application
After=network.target
[Service]
User=your_username
ExecStart=/path/to/your/venv/bin/gunicorn --bind 0.0.0.0:8000 app:app
Restart=always
[Install]
WantedBy=multi-user.target
然后启用并启动服务:
sudo systemctl enable my_python_service
sudo systemctl start my_python_service
必须提醒的是,ExecStart路径一定要用虚拟环境里的Gunicorn绝对路径,否则容易出问题。
二、桌面应用打包:生成可执行文件
如果想把Python脚本打包成无需安装Python就能运行的文件,比如.exe或Linux二进制文件,下面两个工具可以选。
1. PyInstaller
这是最常用的打包工具,上手快:
pip install pyinstaller
打包命令也简单:
pyinstaller --onefile your_script.py
--onefile参数的意思是生成单个可执行文件。如果不加,会生成一个包含依赖的文件夹。打包完成后,在dist/目录下就能找到那个可执行文件。Linux下没有后缀,Windows下是.exe,一目了然。
2. cx_Freeze
如果你的项目结构比较复杂,cx_Freeze可能更适合。安装方式:
pip install cx_Freeze
然后在项目根目录创建setup.py:
from cx_Freeze import setup, Executable
setup(
name="YourApp",
version="0.1",
description="Your application description",
options={
"build_exe": {
"packages": ["os"],
"excludes": ["tkinter"]
}
},
executables=[Executable("your_script.py")]
)
打包命令:
python setup.py build
生成的可执行文件在build/目录下。
3. 注意事项
有几个坑值得提前避一避。
跨平台问题:打包后的可执行文件只能在当前操作系统运行。你在Ubuntu上打包的文件,拿到Windows上肯定不行,反过来也一样。需要在目标平台上重新打包。
资源文件:如果应用里用到了图片、配置文件等,打包时需要用--add-data参数指定。比如PyInstaller的写法是pyinstaller --add-data "config.ini:."。
依赖检查:确保虚拟环境里装了所有必要的依赖。打包时不会自动检查缺失的包,漏了的话,打包后的文件可能跑不起来。
以上流程基本覆盖了Ubuntu环境下Python应用的主要发布场景。根据你的应用类型——Web还是桌面——选对方法,就能少走弯路。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Ubuntu下使用Git管理Swagger项目的完整指南
- 时间:2026-08-31
-
- Ubuntu下GIMP滤镜使用全指南:从基础操作到批量处理
- 时间:2026-08-31
-
- Ubuntu下使用Telnet进行远程管理的完整指南
- 时间:2026-08-31
-
- Ubuntu中如何查看磁盘I/O对CPU的影响:cpustat替代方案
- 时间:2026-08-31
-
- Ubuntu系统使用cpustat查看多核CPU信息的方法
- 时间:2026-08-31
-
- Ubuntu中Rust日志系统配置指南
- 时间:2026-08-27
-
- Ubuntu下Rust集成第三方库完整指南
- 时间:2026-08-27
-
- Ubuntu下Rust跨平台开发:从环境搭建到自动化测试指南
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
