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

相关推荐

  • 我的世界EC服务器小喇叭怎么弄,有没有教程?

    在EC服务器里弄小喇叭,核心就两步:装一个支持广播的插件,然后配好权限和触发方式;其中用EssentialsX的/broadcast指令是最快、最稳的入门办法,为什么EC服务器需要小喇叭?很多玩家刚进服时找不到路、不知道商店在哪、不清楚活动规则,管理员总不能站地图中央喊话,小喇叭就是解决这个场景的:一条带颜色……

    2026年10月18日
    200
  • HTTP服务器是否成功怎么看?,怎么判断服务器启动成功?

    看HTTP服务器有没有成功,最直接的办法是发一个最小HTTP请求,拿到状态码和响应头,再回头核对服务器进程、端口和日志;状态码2xx说明协议层成功,业务是否成功还要看响应体,服务器不会说话,但它会用状态码、响应头和日志留痕,下面按“客户端验证、状态码判断、服务器端核对、场景差异、监控工具”拆开讲,尽量给到能直接……

    程序编程 2026年10月31日
    200
  • 我的世界手机版ec服务器怎么开,需要什么条件?

    我的世界手机版EC服务器怎么做?核心结论:EC通常指Eaglercraft,不是基岩版服务器,手机开服可行,但本质是把安卓或iPhone变成小型主机,用Termux运行Java服务端,再通过内网穿透或公网IP暴露WebSocket端口,手机浏览器输入地址即可进服,我的世界手机版EC服务器怎么做?先分清Eagle……

    2026年10月18日
    400
  • PS4战地4如何修改服务器地址,战地4延迟高怎么解决

    PS4战地4换服务器地址的核心操作是:通过修改PS4的DNS设置或使用网络加速器切换节点,即可在游戏内匹配到对应区域的服务器,这篇文章会把PS4端换服的具体步骤、常见问题以及不同方案的优缺点讲清楚,照着操作就能解决你的问题,为什么你的PS4战地4总是匹配到高延迟房间很多玩家在港服或日服玩战地4时,明明网络带宽很……

    2026年9月16日
    100
  • U盘视频显示服务器运行失败该如何处理,怎么恢复视频文件?

    U盘视频打开提示“服务器运行失败”,先别急着格式化U盘或者删除视频,这大概率不是文件坏了,而是播放设备(智能电视、电视盒子、投影仪)的系统媒体服务临时罢工,或者视频编码格式超出了设备硬解能力,按下面顺序排查,多数情况下能恢复播放,先弄懂“服务器运行失败”到底在说什么很多朋友一看到“服务器”三个字就懵了,以为视频……

    程序编程 2026年10月18日
    200
  • ftp服务器ip连接数有限制怎么办,连接数超限怎么处理

    FTP服务器IP连接数有限制,优先调整服务端单IP并发参数,再检查被动端口、防火墙、NAT和云平台规格;如果同一出口IP下用户多,应改用每用户限制或SFTP/FTPS分流,FTP服务器IP连接数有限制怎么解决?先分清限制来源看到“421 Too many connections from this IP”或“5……

    2026年10月17日
    100
  • 怎么用DHCP给服务器分配固定IP?,设置步骤有哪些

    用DHCP给服务器分配固定IP,核心做法是在DHCP服务里配置“保留地址”或“静态绑定”,把服务器的MAC地址与指定IP绑定,让服务器每次续租都拿到同一个地址, 这样既保留DHCP集中管理的好处,又避免手动填IP带来的冲突和漏改,怎么用DHCP给服务器分配固定IP地址:先理解保留地址DHCP保留地址到底绑定了什……

    程序编程 2026年10月23日
    100
  • win10系统运行服务器失败怎么处理?,服务器故障原因是什么?

    win10系统运行服务器失败,核心原因跑不出端口占用、服务未启动、权限不足这三大类, 遇到报错先别急着重装系统,按着下面几个步骤排查,多半能自己搞定,win10搭建服务器失败,先看是不是端口被“占坑”了服务器程序启动时报“端口已被占用”,这是win10系统运行服务器失败里最常见的一幕,你以为自己没开什么程序,但……

    2026年9月28日
    200
  • Excel会计软件怎么用,基本操作有哪些?

    对于小微企业而言,Excel确实能充当最基础的会计工具,完成简单的收支记账和报表制作,但当业务量加大、数据复杂度提升时,Excel在权限管理、审计追踪和自动化处理上的短板就会暴露,长期来看仍需向专业会计软件迁移,Excel会计软件的应用现状与痛点Excel在会计领域的普及率一直很高,尤其集中在初创团队、兼职会计……

    2026年7月14日
    3400
  • AIoT的名义布局是什么意思?AIoT布局前景如何

    AIoT(人工智能物联网)布局的核心在于实现“智能互联”与“数据价值闭环”,企业必须从单一硬件销售转向场景化服务生态构建,以数据驱动决策,才能在万物智联时代占据制高点,这不仅是技术的升级,更是商业模式的彻底重构, 战略升维:从连接到赋能的必然路径传统物联网侧重于设备的连接与控制,而AIoT的核心在于赋予设备“思……

    2026年3月11日
    12900

发表回复

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