)
文章目录一、文档简介与部署方案说明二、前置核心原理部署前必懂解决90%新手疑问2.1 什么是Python虚拟环境2.2 为什么本地一定要建虚拟环境2.3 未激活虚拟环境执行 pip freeze 会下载所有依赖吗关键避坑2.4 IDEA 内置虚拟环境是否需要手动激活2.5 为什么部署一定要升级pip会不会版本不匹配三、本地环境准备 纯净依赖导出所有部署通用前置步骤3.1 进入本地项目根目录3.2 本地创建并激活纯净虚拟环境3.3 升级虚拟环境内pip3.4 安装项目依赖并导出清单四、服务器基础环境初始化首次部署必做4.1 CentOS 安装Python34.2 Ubuntu 安装Python34.3 验证环境是否安装成功五、方案A服务器虚拟环境部署生产推荐、标准方案5.1 创建项目目录并进入5.2 创建服务器专属虚拟环境5.3 激活虚拟环境5.4 升级当前环境pip5.5 上传本地项目至服务器5.6 一键安装所有项目依赖5.7 项目运行测试 生产常驻5.8 退出虚拟环境六、方案B服务器全局环境部署无虚拟环境、极简临时方案6.1 直接使用服务器全局Python环境6.2 全局安装依赖6.3 项目运行命令6.4 退出虚拟环境6.5 方案优缺点总结七、服务器精准运维命令优化版告别杂乱进程7.1 精准查询项目进程支持按项目名/脚本名查询彻底告别过多进程7.2 停止项目进程不止PID一种方法7.3 查看项目运行日志7.4 退出虚拟环境7.5 进阶服务器Crontab定时运行Python脚本核心实用功能7.5.1 Crontab 基础语法7.5.2 编辑定时任务列表7.5.3 方案1虚拟环境脚本定时执行推荐、无冲突7.5.4 方案2全局环境脚本定时执行7.5.5 常用定时规则参考7.5.6 定时任务运维命令7.5.7 定时任务避坑要点7.6 运维命令总览总结八、项目迭代更新流程后续改代码、加依赖通用步骤九、常见问题避坑汇总一、文档简介与部署方案说明本文档适用于Python 单文件脚本、Python 多文件整套系统的 Linux 服务器生产部署CentOS、Ubuntu 通用。文档包含两套完整部署方案按需选择方案A推荐虚拟环境隔离部署—— 多项目互不干扰、无依赖冲突、生产标准方案方案B极简服务器全局环境部署—— 仅适合服务器只跑一个Python项目的临时场景全流程由浅入深环境原理说明 → 本地纯净依赖导出 → 服务器环境搭建 → 项目部署运行 → 日常运维 → 迭代更新 → 问题避坑。二、前置核心原理部署前必懂解决90%新手疑问本节提前讲透虚拟环境核心逻辑避免后续部署看不懂、不敢操作。2.1 什么是Python虚拟环境虚拟环境是 Python 官方自带的独立、隔离的微型运行环境。它不会复制对方电脑的环境、不会联网同步只会克隆当前本机的Python解释器生成一套独立的 python、pip、依赖库。本地执行python3 -m venv .venv克隆本地电脑Python用于纯净导出依赖服务器执行python3 -m venv .venv克隆服务器Linux Python用于正式运行项目两套环境完全独立仅通过requirements.txt同步依赖版本。2.2 为什么本地一定要建虚拟环境本地虚拟环境唯一核心目的提纯依赖只导出项目真正需要的库。如果用电脑全局Python会包含大量历史安装的冗余库直接导出会导致服务器安装大量无用依赖引发版本冲突、运行报错本地虚拟环境是空白干净环境只装项目所需依赖导出的清单100%适配项目2.3 未激活虚拟环境执行 pip freeze 会下载所有依赖吗关键避坑结论会100% 导出你电脑全局所有Python包极度危险。如果本地终端没有进入/激活.venv此时执行pip freeze requirements.txt读取的是电脑全局Python环境不是项目环境。会把你电脑所有历史安装的库全部导出导致依赖文件巨大、杂乱服务器安装大量无用包版本冲突、部署报错、项目跑不起来只有终端前缀显示 (.venv) 激活成功后导出的依赖才是纯净的项目依赖。2.4 IDEA 内置虚拟环境是否需要手动激活结论IDE 内运行代码不用手动激活终端部署必须手动激活。你在 IDEA 中配置好 .venv 解释器后点击运行代码、调试代码IDE 自动使用该虚拟环境无需执行激活命令但是你在 IDEA 终端、CMD、PowerShell、服务器终端手动敲 pip / python 命令必须手动激活简单区分IDE 点运行 自动激活自己敲命令 必须手动激活。2.5 为什么部署一定要升级pip会不会版本不匹配升级pip绝对安全不会导致依赖版本错乱核心区分pip只是安装工具不参与项目代码运行pymysql/openpyxl等是项目真实依赖版本由requirements.txt锁定依赖清单只记录业务库版本不记录pip版本旧pip漏洞多、解析依赖容易失败新版pip向下兼容所有旧依赖是部署必做步骤。三、本地环境准备 纯净依赖导出所有部署通用前置步骤无论服务器用虚拟环境还是全局环境本地都必须按此步骤导出纯净依赖保证本地、服务器运行环境一致。3.1 进入本地项目根目录终端 CD 到你的项目最外层根目录包含所有py文件、配置文件cd /你的项目绝对路径3.2 本地创建并激活纯净虚拟环境目的清空冗余依赖保证导出清单干净无垃圾。Windows 系统# 创建本地虚拟环境 python -m venv .venv # 激活本地虚拟环境 .venv\Scripts\activateMac / Linux 系统python3 -m venv .venv source .venv/bin/activate激活成功终端前缀出现(.venv)标识。3.3 升级虚拟环境内pippip install --upgrade pippip当前虚拟环境内的 pip 程序install安装–upgrade升级最后一个pip要升级的包名pip 本身注只升级【当前这个虚拟环境】里面的 pip完全不动服务器全局 pip也不影响其他项目虚拟环境。如果失败了可以试试这个命令python.exe -m pip install --upgrade pip3.4 安装项目依赖并导出清单先安装你项目需要的所有依赖pymysql、openpyxl等再导出锁定版本# 导出当前环境所有依赖版本到标准文件 pip freeze requirements.txt参数解释pip freeze读取当前环境所有第三方库精准版本重定向输出将内容写入文件执行后项目根目录生成requirements.txt必须和项目代码一起上传服务器。四、服务器基础环境初始化首次部署必做服务器新装Python3环境为两种部署方案提供基础运行依赖。4.1 CentOS 安装Python3yum update -y yum install python3 python3-pip python3-venv -y4.2 Ubuntu 安装Python3apt update -y apt install python3 python3-pip python3-venv -y4.3 验证环境是否安装成功python3 --version pip3 --version正常输出版本号即为安装完成。五、方案A服务器虚拟环境部署生产推荐、标准方案适用服务器多项目并存、长期运行、需要稳定无冲突的生产场景。5.1 创建项目目录并进入mkdir -p /home/python_project cd /home/python_project5.2 创建服务器专属虚拟环境python3 -m venv .venv命令解释基于服务器本机Python3创建当前项目独立隔离环境。5.3 激活虚拟环境source .venv/bin/activate 重要常识虚拟环境是临时会话生效断开Xshell/重新连接服务器后需要重新执行此命令激活环境否则会使用系统全局Python。激活标识终端前缀变为(.venv)。5.4 升级当前环境pippip install --upgrade pip激活虚拟环境后直接用pip无需pip3。5.5 上传本地项目至服务器将本地所有py文件、配置文件、requirements.txt完整上传至/home/python_project目录。推荐上传方式SFTP(FileZilla 22端口)、Xshell传输、Git克隆。5.6 一键安装所有项目依赖pip install -r requirements.txt自动复刻本地所有依赖版本实现环境完全一致。5.7 项目运行测试 生产常驻前台测试运行排查报错# 替换为你的项目入口文件main.py / run.py / app.py python main.py无报错、正常输出日志即可CtrlC终止切换生产后台运行。生产后台永久常驻运行nohup python main.py run.log 21参数解释nohup关闭终端不停止进程 run.log正常日志写入文件21错误日志同步写入日志文件后台运行5.8 退出虚拟环境deactivate退出后终端(.venv)标识消失回到服务器全局环境。六、方案B服务器全局环境部署无虚拟环境、极简临时方案适用服务器仅部署一个Python项目、无其他Python业务、临时测试使用。❌禁止多项目服务器使用会造成全局依赖覆盖、版本冲突、旧项目报错。6.1 直接使用服务器全局Python环境无需创建、激活虚拟环境直接在项目目录操作。6.2 全局安装依赖pip3 install --upgrade pip pip3 install -r requirements.txt6.3 项目运行命令# 前台测试 python3 main.py # 后台常驻 nohup python3 main.py run.log 216.4 退出虚拟环境deactivate退出后终端(.venv)标识消失回到服务器全局环境。6.5 方案优缺点总结优点步骤少、无需管理虚拟环境、上手简单缺点依赖全局共用无法多项目共存生产稳定性差七、服务器精准运维命令优化版告别杂乱进程摒弃老旧杂乱的全局 grep 查询使用精准命令定位项目进程。7.1 精准查询项目进程支持按项目名/脚本名查询彻底告别过多进程原有ps命令会查出所有Python进程依然很乱。生产推荐按项目脚本名称精准匹配PID是最干净的查询方式。语法根据你的入口文件名精准过滤例你的项目是 main.py 就查 main# 根据脚本名精准查询PID替换 main 为你的文件名如 run、app pgrep -f main # 查看详细进程信息 ps -ef | grep main | grep -v grep优势直接只过滤当前项目进程其他系统Python进程全部屏蔽多项目服务器完美适配。7.2 停止项目进程不止PID一种方法方式1通过PID停止传统常用kill -9 进程号方式2直接按项目脚本名批量杀进程更方便、推荐# 一键杀掉该项目所有进程替换main为你的入口文件名 pkill -f main无需手动找PID一条命令直接关停对应项目所有后台进程日常迭代更新首选。优势自动过滤系统冗余进程、grep自身进程只展示用户部署的项目进程。7.3 查看项目运行日志# 实时滚动查看最新日志常用 tail -f run.log # 查看完整全部日志 cat run.log7.4 退出虚拟环境deactivate退出后终端(.venv)标识消失回到服务器全局环境。7.5 进阶服务器Crontab定时运行Python脚本核心实用功能适用于需要定时自动执行Python脚本的场景定时爬虫、定时数据同步、定时报表、定时清理任务等支持虚拟环境、全局环境两种配置Linux自带无需额外安装。7.5.1 Crontab 基础语法定时规则分 时 日 月 周 执行命令*代表任意时间示例0 3 * * *代表每天凌晨3点执行7.5.2 编辑定时任务列表# 编辑当前用户定时任务 crontab -e7.5.3 方案1虚拟环境脚本定时执行推荐、无冲突必须填写虚拟环境python绝对路径脚本绝对路径crontab不会自动加载终端虚拟环境。示例每天凌晨3点执行一次脚本0 3 * * * /home/python_project/.venv/bin/python /home/python_project/main.py gt;gt; /home/python_project/cron_log.log 2gt;amp;1命令逐段解释0 3 * * *定时规则每天03:00执行/home/python_project/.venv/bin/python项目虚拟环境Python绝对解释器路径关键避免全局环境错乱/home/python_project/main.pyPython脚本绝对路径 cron_log.log 21保存定时任务执行日志方便排查报错7.5.4 方案2全局环境脚本定时执行仅适合单项目全局部署场景0 3 * * * /usr/bin/python3 /home/python_project/main.py /home/python_project/cron_log.log 217.5.5 常用定时规则参考# 每1分钟执行一次 * * * * * # 每小时整点执行 0 * * * * # 每天凌晨3点执行 0 3 * * * # 每周日凌晨3点执行 0 3 * * 07.5.6 定时任务运维命令# 查看已存在的定时任务 crontab -l # 删除所有定时任务谨慎操作 crontab -r # 查看crontab运行日志排查任务不执行问题 tail -f /var/log/cron7.5.7 定时任务避坑要点crontab 无法识别终端相对路径必须全部使用绝对路径解释器、脚本、日志文件虚拟环境定时必须指定.venv/bin/python否则会调用系统全局Python依赖缺失报错定时任务默认无终端输出务必配置日志输出方便排查异常后台常驻项目和定时任务可共存常驻接口服务 定时任务自动执行业务脚本7.6 运维命令总览总结汇总所有高频运维命令方便日常复制使用# 精准查进程 ps -ef | grep main | grep -v grep pgrep -f main # 杀进程 kill -9 进程ID pkill -f main # 查看日志 tail -f run.log # 虚拟环境退出 deactivate # 定时任务管理 crontab -l crontab -e # 替换PID为查到的项目进程号 kill -9 PID八、项目迭代更新流程后续改代码、加依赖通用步骤本地修改代码、新增第三方依赖本地虚拟环境中重新执行pip freeze requirements.txt更新依赖清单上传新代码和新的requirements.txt到服务器直接覆盖就行服务器对应环境更新依赖虚拟环境方案激活环境后pip install -r requirements.txt全局环境方案直接pip3 install -r requirements.txt杀死旧进程重新后台启动项目完成更新。九、常见问题避坑汇总重新连接服务器后Python环境失效虚拟环境为会话临时生效重连需重新执行source .venv/bin/activate服务器依赖安装报错优先检查本地是否在虚拟环境导出纯净依赖全局环境冗余包会导致冲突后台运行看不到打印输出正常现象后台日志全部存入 run.log前台运行仅用于测试项目启动端口占用部署前确认端口未被占用云服务器需放行安全组端口、服务器开启防火墙端口多项目部署错乱严禁多项目使用全局环境必须每个项目单独配置虚拟环境