news 2026/5/1 5:49:14

12 - Python项目打包部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
12 - Python项目打包部署

Python 项目打包部署的流程会因项目类型(如命令行工具、Web应用等)和部署环境(本地服务器、云服务器等)而有所不同。下面详细讲讲通用的打包部署步骤,涵盖常见的打包方式和部署场景。

项目结构整理

确保项目结构清晰,包含必要的文件和目录,例如:

myproject/ ├── project/ # 项目代码包 │ ├── __init__.py │ ├── main.py │ └── ... ├── tests/ # 测试代码包 │ ├── __init__.py │ └── ... ├── requirements.txt # 项目依赖文件 ├── setup.py # 项目打包配置文件(可选) └── README.md # 项目说明文件

导出项目依赖

使用uv pip freeze命令将项目依赖的第三方库及其版本信息保存到requirements.txt文件中:

uv pip freeze > requirements.txt

选择打包方式

使用setuptools打包(适用于库或命令行工具)

setuptools是 Python 中常用的打包工具,可将项目打包成 Python 包进行分发。创建setup.py文件,示例如下:

from setuptools import setup, find_packages setup( name='myproject', version='1.0.0', packages=find_packages(), install_requires=open('requirements.txt').read().splitlines(), entry_points={ 'console_scripts': [ 'project_name = project.main:main', # 命令行入口 ], }, )

然后使用以下命令进行打包:

python setup.py sdist bdist_wheel

这会在dist目录下生成源码包(.tar.gz)和二进制包(.whl)。

使用PyInstaller打包(适用于独立可执行文件)

PyInstaller可以将 Python 项目打包成独立的可执行文件,无需安装 Python 环境即可运行。安装PyInstaller

pip install pyinstaller

然后使用以下命令进行打包:

pyinstaller --onefile project/main.py

这会在dist目录下生成一个独立的可执行文件。

代码共享同步

将本地开发代码上传到服务器上,这里现在有很多的方式,如。

  • 本地将代码传到git或者gitee 上,在服务器上再从git或者gitee上拉下来代码。
  • 使用ftpxftp工具将文件上传到服务器,例如使用winscp

选择部署环境

服务器环境准备

  • 在服务器上安装操作系统如Windows ServerCentosUbuntu等。
  • 安装合适的Python 版本以及其他所需的第三方应用系统。
  • 安装项目系统所需的依赖。
  • 安装项目。

本地服务器部署

如果是 Web 应用,可使用专业的WSGI服务器系统(如GunicornuWSGI)进行部署。以Gunicorn为例,安装并启动应用:

pip install gunicorn # 假设 app 是 Flask 或 Django 应用实例 gunicorn -w 4 -b 0.0.0.0:8000 project.main:app

云服务器部署

常见的云服务提供商有阿里云、腾讯云、AWS等。部署步骤如下:

  • 创建云服务器实例:选择合适的操作系统(如UbuntuCentOS)和配置。

  • 连接服务器:使用SSH工具(如PuTTYOpenSSH)连接到服务器。

  • 上传项目文件:可以使用scp命令或FTPXFTP工具将项目文件上传到服务器。

  • 安装依赖:在服务器上安装 Python 和项目依赖:

    sudo apt-get update sudo apt-get install python3 python3-pip pip install -r requirements.txt
  • 启动应用:根据项目类型选择合适的方式启动应用,如使用Gunicorn启动 Web 应用。

Docker容器化部署

Docker可以将项目及其依赖打包成一个独立的容器,实现跨环境的一致性部署。步骤如下:

  1. 安装Docker:根据操作系统选择合适的安装方式。
  2. 创建Dockerfile:在项目根目录下创建Dockerfile,示例如下:
# 使用基础镜像 FROM python:3.9 # 设置工作目录 WORKDIR /app # 复制项目文件 COPY . . # 安装项目依赖 RUN pip install -r requirements.txt # 暴露端口 EXPOSE 8000 # 启动应用 CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "project.main:app"]
  • 构建Docker镜像:在项目根目录下执行以下命令:

    docker build -t project_name .
  • 运行Docker容器:

    docker run -p 8000:8000 project_name

配置服务管理

为了确保应用在服务器重启后自动启动,可以使用系统服务管理工具(如systemd)来管理应用。以Gunicorn为例,创建一个systemd服务文件(如/etc/systemd/system/project_name.service):

[Unit] Description=Project Name Gunicorn Server After=network.target [Service] User=your_username Group=your_groupname WorkingDirectory=/path/to/your/project ExecStart=/path/to/your/venv/bin/gunicorn -w 4 -b 0.0.0.0:8000 project.main:app Restart=always [Install] WantedBy=multi-user.target

然后使用以下命令启动并设置开机自启:

sudo systemctl start project_name sudo systemctl enable project_name

配置反向代理(可选)

如果是 Web 应用,可以使用NginxApache作为反向代理服务器,将请求转发给应用服务器,提高性能和安全性。以Nginx为例,编辑配置文件(如/etc/nginx/sites-available/default):

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; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

然后重启Nginx

sudo systemctl restart nginx

通过以上步骤,你可以将 Python 项目打包并部署到不同的环境中。在实际操作中,根据项目的具体需求和部署环境进行适当调整。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 6:18:44

答题PK小程序带后台完整源码

答题PK小程序(带完整后台)- 完整源码重磅上线 一站式答题竞技解决方案,无需从零开发,即刻拥有功能完备、体验流畅的答题PK小程序,搭配可视化管理后台,轻松搭建专属答题竞赛平台!核心亮点 ✅ 全场…

作者头像 李华
网站建设 2026/4/18 5:24:37

揭秘物流路径优化新革命:量子Agent如何实现毫秒级决策?

第一章:物流量子 Agent 的路径优化在现代物流系统中,路径优化是提升运输效率、降低运营成本的核心挑战。传统算法如 Dijkstra 或 A* 在面对大规模动态网络时计算开销大,响应速度受限。近年来,结合量子计算思想与多智能体系统的“物…

作者头像 李华
网站建设 2026/4/19 13:59:42

5分钟掌握企业微信智能消息推送:告别重复劳动的高效方案

5分钟掌握企业微信智能消息推送:告别重复劳动的高效方案 【免费下载链接】wework-wehook-starter 项目地址: https://gitcode.com/gh_mirrors/we/wework-wehook-starter 还在为每日繁琐的消息通知而头疼?团队协作中那些重复性的信息推送工作不仅…

作者头像 李华
网站建设 2026/4/24 2:05:09

Unity WebGL RTSP播放器完整教程:3分钟搭建专业监控系统

Unity WebGL RTSP播放器完整教程:3分钟搭建专业监控系统 【免费下载链接】RTSP-Player-For-Unity-WebGL 测试网页居中弹窗播放 RTSP 视频,可用于接 rtsp 监控,同时演示怎么接入到 webgl 上 项目地址: https://gitcode.com/gh_mirrors/rt/RT…

作者头像 李华
网站建设 2026/4/16 16:30:13

MQTT Explorer深度评测:物联网调试客户端的终极解决方案

在物联网快速发展的今天,MQTT客户端已成为开发者和系统管理员不可或缺的工具。MQTT Explorer作为一款功能全面的消息监控工具,在物联网调试客户端领域展现出卓越的性能。本文将为您全面解析这款工具的核心优势、实战应用和配置技巧。 【免费下载链接】MQ…

作者头像 李华
网站建设 2026/4/26 1:12:18

为什么你的仓储Agent分拣效率总上不去?99%源于这4个隐藏设计缺陷

第一章:物流仓储 Agent 的分拣效率在现代物流仓储系统中,智能 Agent 技术的引入显著提升了分拣作业的自动化与智能化水平。通过部署具备自主决策能力的 Agent,系统能够在无需人工干预的情况下完成包裹识别、路径规划与目标投递,从…

作者头像 李华