位置:首页 > Python > Ubuntu 上发布 Python 应用:Web 部署与桌面打包两条路线讲清楚

Ubuntu 上发布 Python 应用:Web 部署与桌面打包两条路线讲清楚

时间:2026-08-25  |  作者:骑光打字机  |  阅读:0

先说几个关键点。Ubuntu下做Python应用的发布,其实主要分两条路:一是把Web应用(Flask、Django这类)部署到服务器上;二是把脚本打包成能直接双击运行的桌面可执行文件。这两条路的技术栈完全不同,下面逐个拆解。

Ubuntu Python应用如何发布

一、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还是桌面——选对方法,就能少走弯路。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多