py脚本怎么上传到服务器,Linux服务器怎么运行py脚本?

把写好的py脚本放到服务器上,核心路径只有三步:选一台能访问的服务器、用scp或SFTP把文件传上去、在服务器上装好Python环境并运行脚本。整个过程不复杂,但细节决定了脚本能不能稳定跑起来,尤其是路径、依赖和后台运行这三个坑,本文逐一拆开讲清楚。

把python脚本部署到服务器前需要准备什么

在动手传文件之前,先把准备工作做扎实,很多新手卡在第一步就是以为写好的脚本直接扔上去就能跑,实际上服务器环境和本地有差异。

如何把爬虫程序运行到服务器
加载中
如何把爬虫程序运行到服务器
a
aYge
9015--
原视频地址

服务器选购与登录方式

服务器没有统一标准,但选择方向很明确,如果你是个人项目或学习用途,云服务器比物理服务器更划算,按量付费模式灵活,不用了可以释放,据行业共识,简米云、酷番云、华为云的轻量应用服务器对个人开发者友好,新用户活动价常年在百元以内一年,适合练手。

操作系统建议选Ubuntu 20.04或22.04 LTS,Python环境好配,社区资料也最丰富,登录方式用SSH,Windows用户用PowerShell或Windows Terminal自带的ssh命令,macOS直接打开终端。

ssh 用户名@服务器公网IP

输入密码后进入服务器终端,这是后续所有操作的基础入口。

服务器端Python环境确认

登录服务器后先检查Python版本,输入:

python3 --version

如果提示找不到命令,先安装,Ubuntu系统执行:

sudo apt update
sudo apt install python3 python3-pip python3-venv

这里有一个容易忽略的问题:服务器的Python版本可能和本地不一致,比如本地用Python 3.12写的代码用了新语法,服务器如果是3.8就跑不起来,行业惯例是开发和生产环境版本保持一致,或者用venv隔离依赖。

py脚本上传到服务器的两种常用方式

传输文件方法不少,但日常用得最多的是两种:scp命令和SFTP图形化工具,前者适合命令行老手,后者对Windows用户更友好。

用scp命令直接上传

scp是基于SSH的文件传输命令,一条命令搞定,在本地终端执行:

scp /本地路径/你的脚本.py 用户名@服务器公网IP:/目标路径/

举例说明,本地有个爬虫脚本在/Users/me/Projects/spider.py,要放到服务器的/home/ubuntu/scripts目录下:

scp /Users/me/Projects/spider.py ubuntu@1.2.3.4:/home/ubuntu/scripts/

执行后输入服务器密码,文件就传上去了,如果需要传整个文件夹,加-r参数:

scp -r /本地项目目录 ubuntu@1.2.3.4:/home/ubuntu/

这种方式适合临时传单个文件或小项目,零额外工具成本。

用SFTP工具可视化操作

如果你不习惯命令行,FileZilla和WinSCP是Windows用户常用的SFTP客户端,免费开源,连接配置和SSH一样,填主机IP、用户名、密码、端口22,连接成功后左侧本地目录、右侧服务器目录,直接拖拽文件即可。

这里有一个实操细节:脚本依赖的数据文件或配置文件要一并上传,不要只传一个.py文件,很多脚本报错FileNotFoundError就是因为缺少配套的JSON或CSV文件。

在服务器上安装依赖并测试运行

文件传上去后,先别急着跑。依赖安装是脚本能否运行的关键环节。

创建虚拟环境管理依赖

在服务器上为每个项目单独建虚拟环境是行业推荐做法,避免不同项目依赖冲突,进入项目目录后执行:

cd /home/ubuntu/scripts
python3 -m venv venv
source venv/bin/activate

激活后在命令行前缀会显示(venv),说明当前在虚拟环境中,然后安装依赖:

pip install 依赖包名

如果本地有requirements.txt文件,一条命令装完所有依赖:

pip install -r requirements.txt

建议在本地用pip freeze > requirements.txt导出依赖清单,随脚本一同上传,服务器上直接安装。

前台运行与日志输出测试

依赖装好后,先在前台运行一次测试:

python3 你的脚本.py

观察输出是否正常,有没有报错,如果脚本本身需要长期运行,比如爬虫或定时任务,直接前台跑会占用终端,关闭SSH窗口就中断了,这时需要后台运行方案。

python脚本放到服务器上之后如何后台长期运行

后台运行是生产环境最常见的需求,这里介绍三种方案,按推荐程度排序。

nohup加后台运行

最简单的方式:

nohup python3 你的脚本.py > 日志文件.log 2>&1 &

nohup让进程忽略挂断信号,&表示后台运行,日志重定向到文件,查看运行状态:

ps aux | grep 你的脚本.py

停止脚本:

kill 进程PID

这种方式适合快速验证和简单场景,但缺点是服务器重启后脚本不会自动恢复。

systemd服务管理

行业共识是,生产环境用systemd管理Python服务最可靠,在/etc/systemd/system/下新建一个服务文件,比如my-script.service:

[Unit]
Description=My Python Script
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/scripts
ExecStart=/home/ubuntu/scripts/venv/bin/python3 你的脚本.py
Restart=always
RestartSec=3
StandardOutput=append:/home/ubuntu/scripts/脚本.log
StandardError=append:/home/ubuntu/scripts/错误.log
[Install]
WantedBy=multi-user.target

重点说明:ExecStart里写虚拟环境中的Python绝对路径,而不是系统自带的python3,这样能确保用的是已装好依赖的环境,保存后执行:

sudo systemctl daemon-reload
sudo systemctl start my-script
sudo systemctl enable my-script

enable设置开机自启,查看状态和日志:

sudo systemctl status my-script
sudo journalctl -u my-script -f

这套方案的好处是崩溃自动重启、开机自动启动,运维成本最低。

定时任务场景

如果脚本是定时执行的,比如每天跑一次数据统计,直接配置crontab:

crontab -e

在打开的编辑器中写入:

0 3    /home/ubuntu/scripts/venv/bin/python3 /home/ubuntu/scripts/你的脚本.py >> /home/ubuntu/scripts/定时日志.log 2>&1

这表示每天凌晨3点执行一次,日志追加到指定文件,注意crontab里也要用绝对路径,相对路径在定时任务中容易出错。

常见坑位排查与实用技巧

部署过程中难免遇到问题,这里整理几个高频场景和对应解法。

端口与防火墙

脚本如果起了Web服务,比如Flask或FastAPI应用,外界访问不了先查安全组入方向规则,云服务器在控制台有安全组配置,默认只开放22端口,需要手动放行脚本使用的端口,比如8000或8080,同时服务器防火墙也要放行:

sudo ufw allow 8000/tcp

文件权限问题

上传的脚本如果没有执行权限,运行时会报Permission denied,给脚本加权限:

chmod +x 你的脚本.py

如果脚本需要写入数据文件,确保运行用户对目录有写权限:

sudo chown -R ubuntu:ubuntu /home/ubuntu/scripts

路径硬编码问题

本地调试时open("data.txt")没问题,但放在服务器上工作目录不同就会报找不到文件,脚本统一用绝对路径,或者基于__file__动态获取路径:

import os
base_dir = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(base_dir, "data.txt")

这个习惯在部署场景下能节省大量排查时间。

Windows换行符问题

Windows本地写的脚本传到Linux服务器,有时运行报SyntaxError: unexpected character after line continuation character,这是换行符差异导致的,转换方法:

sed -i 's/\r$//' 你的脚本.py

或者用dos2unix工具处理。

Flask和Django项目部署的特殊处理

如果你的“脚本”其实是Web应用,部署方式略有不同,开发服务器的性能不足以应对线上流量,行业惯例是用Gunicorn或uWSGI作为WSGI服务器,配合Nginx反向代理。

安装并启动Gunicorn:

pip install gunicorn
nohup venv/bin/gunicorn -w 4 -b 0.0.0.0:8000 你的应用模块:app > gunicorn.log 2>&1 &

Nginx配置代理转发,将80端口的请求转发到8000端口,这套组合是Python Web应用部署的成熟方案,能承受较大并发量。

运维监控小建议

部署完成只是开始,日常监控也很重要,简单方案是用crontab定时检查进程状态,发现挂了自动重启:

/5     pgrep -f 你的脚本.py || /home/ubuntu/scripts/venv/bin/python3 /home/ubuntu/scripts/你的脚本.py >> /home/ubuntu/scripts/日志.log 2>&1

每5分钟检查一次进程,不存在就拉起来,日志方面用logrotate做日期轮转,避免日志文件无限增大撑满磁盘,这些都是低成本高回报的运维手段,建议部署完成后顺手加上。

python脚本服务器部署失败怎么办

遇到问题先看日志,这是排查的第一原则,前台运行能直接看到报错信息,后台运行翻日志文件。日志里最后几行通常就是根因,定位到问题后,先在本地复现同样的条件测试,修改后再上传覆盖文件,循环这个流程。

如果依赖安装很慢,配置国内镜像源加速:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

服务器内存紧张时,大型Python项目可以考虑用swap扩展虚拟内存,能缓解内存不足导致的进程被系统杀掉的问题。

关于云服务器选择与价格的一些参考

国内云服务器价格差异较大,体验上也有区分,新手阶段轻量应用服务器性价比高,配置1核2G内存、3M带宽的价格通常在一年几十到两百元区间,不同地域和促销周期波动明显,香港或海外节点免备案,但延迟相对高一些,适合有跨境业务需求的场景,国内节点的延迟稳定,首次购买需要在控制台完成备案流程,选择哪家服务商,核心看三点:售前客服响应速度、控制台易用性、文档完整度,个人开发者推荐从熟悉生态的云厂商开始,遇到问题能快速找到解决方案。

把Python脚本部署到服务器,本质是环境迁移和进程管理的组合题,先确认服务器环境,再上传文件和依赖,测试前台运行,最后用systemd或crontab固化运行方式,记住三个关键点:虚拟环境隔离依赖、绝对路径写清楚、日志留好方便定位问题,把这三件事做到位,脚本部署就不再是玄学,而是一个可复用的标准流程。

python脚本部署到服务器后无法运行如何处理

Q:脚本在本地运行正常,上传到服务器后报ModuleNotFoundError,怎么解决?
A:这是依赖缺失的典型症状,在服务器终端执行pip list查看已安装的包,与本地pip list对比,解决方案是先激活虚拟环境,用python3 -m pip install 包名安装缺失依赖,如果项目有requirements.txt,直接执行pip install -r requirements.txt一次性补齐全部依赖。

Q:脚本后台运行一段时间后自动停止,找不到原因怎么办?
A:先看日志文件尾部有没有异常输出,常见原因是内存不足触发OOM Killer,用dmesg | grep -i oom查看系统日志确认,解决方案是优化脚本内存占用,或者给服务器增加swap空间,若脚本是崩溃退出,改用systemd管理并设置Restart=always,系统会自动拉起进程。

Q:Windows本地写的脚本,服务器是Linux,需要注意哪些差异?
A:文件路径分隔符不同,Windows用\而Linux用,脚本中统一使用os.path.join()处理,换行符不同,用dos2unix转换或sublime text保存时选择LF换行,编码方面确保文件保存为UTF-8无BOM格式,避免中文注释导致的解码报错,依赖方面Linux需要编译环境才能装部分包,使用apt install先安装build-essential等基础工具。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/771761.html

赞 (0)
上一篇 2026年10月21日 18:51
下一篇 2026年10月21日 18:51

相关推荐

  • 戴尔服务器T620怎么U盘启动?,设置步骤是什么

    戴尔 PowerEdge T620 设置U盘启动的核心方法是:开机自检时按 F11 进入 Boot Manager(启动管理器),从弹出列表里直接选中你的U盘回车即可,这个方法最快也最稳妥,不用进BIOS翻页,适合一次性重装系统或做阵列卡引导,如果你想让这台塔式服务器每次都优先从U盘启动,则需要开机按 F2 进……

    2026年10月8日
    100
  • steam恐龙岛服务器进不去如何解决,连接失败是什么原因?

    当Steam恐龙岛(The Isle)服务器进不去时,不用急着重装游戏或花钱买加速器,绝大多数情况下是官方服务器维护、网络端口冲突或本地缓存异常导致,按下面顺序排查就能解决,如果你连的是官方服务器,先分清是“全部进不去”还是“某个进不去”,全部进不去多半是官方在更新维护,某个进不去大概率是那张图崩了或者你的本地……

    2026年10月5日
    100
  • cgi启动服务器应用程序错误怎么解决,有哪些原因?

    遇到“cgi启动服务器上应用程序错误”,核心排查方向是配置、权限和程序兼容性三件事,按顺序逐一验证,大多数问题能在十分钟内定位,先分清错误类型再动手很多朋友一看到“应用程序错误”就急着重装环境,其实这个提示背后可能藏着完全不同的故障点,业内专家指出,CGI程序报错的根源通常落在三个层面:服务器配置错误、脚本执行……

    2026年9月6日
    200
  • 广州西门子智能家居系统怎么样?西门子全屋智能怎么选

    2026年广州西门子智能家居系统凭借德国精工标准、深度适配岭南气候的稳定性以及极速本地化响应,已成为大湾区高端全屋智能的首选方案,2026年西门子智能家居的核心技术底座协议融合与边缘计算作为行业资深从业者,必须指出2026年全屋智能已全面进入“Matter+边缘计算”时代,西门子在此轮技术迭代中占据先机:全协议……

    2026年4月26日
    7500
  • HostNamasteVPS测评,荷兰美国5美元/月实测数据与性能表现,HostNamasteVPS怎么样

    HostNamasteVPS在2026年仍具备高性价比,其5美元/月套餐在荷兰节点提供稳定的欧洲访问体验,美国节点适合北美业务,实测I/O性能达标,适合个人博客、轻量级Web服务及开发测试场景,但高并发游戏或重度数据库业务建议升级配置,HostNamasteVPS基础概况与定价策略HostNamaste作为近年……

    2026年5月19日
    6800
  • 丽萨主机VPS2026年测评,日本原生IP、大带宽、Tiktok实测数据表现,丽萨主机vps好用吗

    丽萨主机VPS在2026年凭借日本原生IP的高纯净度、1Gbps起步的大带宽优势以及TikTok视频流媒体的低延迟表现,依然是跨境电商与内容创作者的高性价比首选方案,网络架构与IP纯净度深度解析日本原生IP的稀缺性与合规优势在2026年的海外服务器市场中,IP资源的清洗与复用已成为常态,而“原生IP”(Nati……

    2026年5月14日
    5500
  • 服务器ecs活动有哪些优惠?阿里云ecs服务器活动优惠大全

    服务器ecs活动是当前企业上云最具性价比的突破口——阿里云、腾讯云、华为云等主流厂商正密集推出高折扣、高配置、长周期的专项扶持计划,单台ECS实例月均成本可降至传统物理服务器的1/3,且支持按需弹性伸缩,特别适合初创团队、中小开发者及临时性高并发场景,本文从实操角度,系统梳理2024年Q3最值得参与的服务器ec……

    2026年4月14日
    7300
  • 电脑xp怎么连接无线网络服务器?,连接不上怎么办?

    XP连无线网络连服务器,核心思路就三步电脑xp连无线网络连服务器,本质上就是让老系统通过无线网卡接入路由器,再通过网络协议访问服务器地址,三步就能搞定:装好驱动、连上WiFi、配好IP,整个过程不需要高深技术,但XP系统太老,有些坑需要提前知道,xp怎么连接无线网络?先看这三个前提条件很多人的XP电脑连不上无线……

    2026年8月12日
    1700
  • AI人工智能编程怎么学,零基础新手能学会吗?

    AI编程正在重塑软件工程的核心逻辑,将开发者的重心从繁琐的语法编写转移至高阶的系统架构设计与业务逻辑实现, 这一转变不仅是工具的升级,更是生产力的质变,通过深度理解自然语言意图,智能编程助手已成为现代开发流程中不可或缺的“副驾驶”,它通过自动化重复性任务、提供实时上下文感知建议,显著缩短了从概念到代码的转化周期……

    2026年2月21日
    16600
  • 跨境双师课堂板书语音同步到底难在哪,怎么解决?

    跨境双师课堂最折磨人的不是网络卡顿,而是板书和语音各走各的路——老师在海外写一笔,国内学生等三秒;老师话音落下,学生耳朵里还在回响上一句,要解决这个难题,不能只堆硬件,必须从传输链路、交互协议和场景适配三个方向同时下手,跨境双师课堂的板书与语音同步,难点到底卡在哪先说个常见场景:一位在国内教室的老师,用触控屏写……

    2026年9月8日
    300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注