☰
腾讯云免费服务器部署Python 3.7与PyTorch完整指南
2026/10/16 10:47:19 网站建设 项目流程

简介:针对疫情期间无法返校使用服务器的计算机视觉方向学生,这份腾讯云部署指南提供了一套低成本、短周期可落地的解决方案。作者结合自身实践,从新用户免费领取15天服务器、完成实名认证,到重装系统、通过FileZilla上传本地项目、导出并安装依赖环境的完整流程均有清晰梳理,并特别说明了如何在默认Python2.7的云主机上配置Python3.7,以及安装不带CUDA版本的PyTorch来运行代码。资源为一份1.18MB的docx文档,共1个文件,采用图文步骤形式,覆盖服务器选用、系统切换、文件传输、依赖安装等关键环节,并包含若干易错点提醒,如终端密码获取方式、镜像选择等。适合有一定Python基础但初次接触云服务器的学习者按图索骥。文档已有6535人学习下载,经过实践验证,对因实验室资源紧张而无法跑通模型的学生而言,仍是一份节省试错成本的参考手册。

1. 腾讯云服务器上部署 Python 3.7:从免费额度到跑通 PyTorch 的完整链路

如果你是因为算力不够才点进来的,这篇文章就是给你准备的。作为计算机视觉方向的学生,我曾经被“本地跑一个训练要两小时、跑完发现参数设错”折磨到怀疑人生,后来用腾讯云服务器的短期免费额度,把 Python 3.7 + PyTorch 代码部署到云端跑通,整个过程从购买到执行代码,一份完整的踩坑记录都在这里。很多教程只讲“怎么买服务器”,不讲“买完之后怎么把代码弄上去跑起来”,更不讲“免费服务器到底能不能跑 PyTorch”——这两件事才是真正的坑。这篇笔记覆盖新用户免费领服务器、远程连接、上传代码、装 Python 3.7 和 CPU 版 PyTorch 的完整流程,新手照着做能跑通,老手也能看到环境依赖和镜像选择的边界。

2. 免费服务器申请与系统选择:15 天额度该怎么领、怎么续

2.1 新用户免费领 15 天的认证链路

腾讯云对新用户有一个免费领取短期服务器的入口,领取路径通常藏在公众号或控制台的“个人认证福利”里。第一次操作的人最容易卡在“找不到入口”或“领了但看不到实例”。整个领取链路是这样的:先微信扫码登录腾讯云官网,进入控制台后系统会引导你完成实名认证和手机号认证,认证通过后在“云产品”中找到“云服务器”,下方会自动显示已领取的免费实例。

2.2 免费实例的配置边界与续费策略

免费领取的服务器配置不高,一般是 1 核 1G 或 1 核 2G 的入门套餐,系统默认预装 CentOS。对于普通学生的代码运行需求——比如跑 PyTorch CPU 推理、小批量数据处理、Web 服务测试——这个配置是够用的。但如果你要跑大规模训练或并发服务,这个配置会明显吃力。

2.3 从 CentOS 重装为 Ubuntu 的完整操作

免费领取的服务器默认是 CentOS 系统,如果你更习惯 Ubuntu 的 apt 包管理,可以在实例列表中点击实例左下角的“更多”,选择“重装系统”,镜像部分选择“公共镜像”,在列表中找到 Ubuntu 版本,确认后等待重装完成。重装只会影响系统盘数据,你的数据盘和网络配置不受影响,重装前确认实例内的数据已经备份即可。

3. 登录虚拟机与本地依赖导出:连上终端只是第一步

3.1 控制台登录与初始密码处理

实例创建或重装完成后,在控制台点击“登录”按钮,选择“立即登录”会打开一个网页版终端窗口。终端密码是申请服务器时系统发送的短信或公众号消息里的初始密码,第一次登录后建议立即修改。这里有一个常见的坑:如果你是通过网页终端登录,密码输入时不会显示任何字符,这是正常现象,直接输入后回车即可。

3.2 本地导出 requirements.txt 的正确姿势

在本地命令行中,进入你的代码项目路径,执行pip freeze > requirements.txt将当前环境中的依赖包导出。这个命令会把你本地环境中所有用 pip 安装的包全部列出来,包括一些与代码运行无关的包。更精准的做法是使用pipreqs工具,它会扫描项目代码中实际 import 的模块并生成依赖列表。

3.3 免费实例的目录结构与权限说明

登录后默认会进入一个普通用户目录,Ubuntu 系统的默认用户名为 ubuntu,CentOS 系统默认是 root。如果你是 Ubuntu 系统,会发现很多操作需要 sudo 权限,比如安装系统级依赖包、修改系统目录等。我一般建议在个人用户目录下创建 project 文件夹来存放代码,既避免权限问题,也方便后续管理。

4. 本地文件上传与 Python 3.7 环境迁移:FileZilla 和 pip3 的配合流程

4.1 使用 FileZilla 上传项目文件

本地代码需要传输到服务器上才能运行。FileZilla 是一个跨平台的 FTP/SFTP 客户端,下载安装后在主机栏填入服务器的公网 IP,用户名填 ubuntu(CentOS 系统填 root),密码填之前修改后的密码,端口选择 22(SFTP 默认端口),点击快速连接即可进入服务器的文件系统。

4.2 服务器初始 Python 版本与升级路径

腾讯云的 Ubuntu 或 CentOS 系统自带的 Python 版本一般是 2.7 或 3.6。如果要运行 Python 3.7 代码,有两种方案:一种是直接用系统自带的 Python 3.6 运行代码,如果代码兼容 3.6 就不需要额外安装;另一种是编译安装 Python 3.7。编译安装需要先安装编译依赖,比如 build-essential、libssl-dev、zlib1g-dev 等,下载 Python-3.7.x.tar.xz 源码包, ./configure、make、make install 三步完成。

4.3 通过 pip3 安装依赖与常见报错处理

安装完 Python 3.7 后,还需要安装 pip3 才能管理 Python 包。在 Ubuntu 系统中执行sudo apt install python3-pip,CentOS 使用yum install python3-pip。之后 cd 到上传的项目目录,执行pip3 install -r requirements.txt安装依赖。

4.4 没有 Anaconda 环境的替代方案

免费服务器没有预装 Anaconda,如果本地开发环境中有 Anaconda 的 conda 环境,直接使用 requirements.txt 安装会非常麻烦。一个可行的替代方案是逐个使用 pip3 安装需要的包,虽然效率低但能保证环境可控。另一个方案是在服务器上安装 Miniconda,它的体积比 Anaconda 小得多,安装完可以创建虚拟环境并直接使用 conda 的 requirements 导出和恢复功能。

5. 安装 CPU 版 PyTorch:跑代码前最容易翻车的一步

5.1 确认服务器没有 GPU,选择合适的 PyTorch 版本

免费服务器没有配置 GPU 服务,因此不能安装正常的 CUDA 版 PyTorch,需要安装不带 CUDA 的版本。安装方式是通过 pip3 指定下载 CPU 版本 wheel 文件。对于 Python 3.7,可以使用 PyTorch 官方提供的下载链接,如pip3 install https://download.pytorch.org/whl/cpu/torch-1.0.1.post2-cp37-cp37m-linux_x86_64.whl,安装完成后还需要安装配套的 torchvision。

5.2 安装 CPU 版 PyTorch 的具体命令与验证方法

# 先安装 torch,注意链接中的 cp37 表示 Python 3.7 pip3 install https://download.pytorch.org/whl/cpu/torch-1.0.1.post2-cp37-cp37m-linux_x86_64.whl # 安装 torchvision,默认会匹配对应版本的 torch pip3 install torchvision

5.3 没有 GPU 时的模型运行策略

CPU 环境下运行 PyTorch 模型,除了慢没有别的致命问题。对于目标检测这类计算量大的任务,建议把输入图片的尺寸调小、batch size 改为 1、关闭数据并行 DataParallel,只用单卡 CPU 模式推理。训练任务在 CPU 上跑动辄几百小时不现实,一般只做推理验证和 Demo 展示。

5.4 运行代码时的内存与性能监控

免费服务器内存一般是 1G 或 2G,PyTorch CPU 版模型在加载权重时容易内存不足。建议在运行前用free -h查看内存使用情况,在代码里加入torch.set_num_threads(4)限制 CPU 线程数,避免内存和 CPU 资源被占满导致系统卡死。

6. 避坑指南:免费服务器部署代码的常见问题与排查记录

6.1 用 pip3 在服务器上安装包时提示找不到命令

现象:执行pip3 install -r requirements.txt时,系统提示pip3: command not found。原因:系统没有安装 python3-pip 包,或者 PATH 环境变量中没有包含 pip3 的路径。解决:在 Ubuntu 上执行sudo apt update && sudo apt install python3-pip;如果用编译方式安装的 Python 3.7,可以通过python3.7 -m pip install来调用 pip,因为编译安装通常不自动生成 pip3 命令。

6.2 PyTorch 安装完成后 import torch 报错

现象:import torch时报错ModuleNotFoundError: No module named 'torch'。原因:pip3 默认安装到了系统级 site-packages,但你运行的 Python 版本与 pip3 指向的 Python 版本不一致。解决:检查which python3和python3 --version,确认实际使用的 Python 是 3.7 版本;如果安装了多个 Python 版本,建议使用虚拟环境python3 -m venv myenv并在虚拟环境中安装依赖,避免版本混乱。

6.3 FileZilla 连接服务器一直超时

现象:FileZilla 连接时提示连接超时或拒绝连接。原因:云服务器的安全组规则没有放行 22 端口,或者你填写的密码有误。解决:登录腾讯云控制台,找到该实例的安全组配置,添加入站规则放行 22 端口;检查密码是否正确,必要时在控制台重置密码。

6.4 运行代码时内存不足导致进程被 kill

现象:执行 python 文件时进程直接消失或提示Killed。原因:免费实例内存过小,PyTorch 加载模型时内存溢出被系统 OOM Killer 杀掉。解决:在代码中减小输入尺寸、降低 batch size,或者使用torch.no_grad()模式推理减少内存开销;还可以通过设置ulimit -v限制进程虚拟内存来提前发现问题。如果代码确实需要较大内存,建议升级服务器内存配置。

6.5 requirements.txt 安装一半就中断无法继续

现象:执行pip3 install -r requirements.txt时网络中断,重装时提示部分包已存在或版本冲突。原因:云服务器访问外网 pip 源不稳定。解决:切换到国内镜像源,如清华源pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple,同时使用--timeout 60参数延长超时时间。

7. 进阶技巧:验证环境一致性、后台运行与定时任务

部署完成后,最值得做的三件事是验证环境一致性、让代码后台运行以及设置定时任务。本地环境是 Anaconda,服务器环境是纯 Python 3.7 + pip,两者的包版本差异可能会让代码跑出一堆莫名奇妙的报错。我会用一条命令把整个验证过程固化下来:在本地先跑一遍pip freeze > requirements.txt,上传到服务器后跑pip3 install -r requirements.txt,然后把代码中所有依赖的版本号与本地比对,如果发现关键包版本不一致,直接在服务器上用pip3 install 包名==具体版本锁定。服务器终端关闭后,正在运行的代码会被终止,如果你的代码需要跑几十分钟甚至几小时,需要设置后台运行,常见做法是使用 nohup 命令:nohup python3 你的文件.py > output.log 2>&1 &,输出结果重定向到 output.log 文件里,方便随时查看进度。如果有定时执行的需求,可以配合 crontab 设置定时任务,比如每天凌晨执行数据抓取或模型推理任务,crontab -e进入编辑模式后,添加一行30 2 * * * /usr/bin/python3 /home/ubuntu/project/你的文件.py,表示每天凌晨 2:30 运行一次。常见的时间格式是“分 时 日 月 周”,自行按需求调整即可。从那以后我每次部署代码到云服务器,都会强制走一遍“导出 requirements → 上传 → 建虚拟环境 → 安装 CPU 版 PyTorch → nohup 后台运行”这套流程,省去了很多反复排查的时间,希望帮到你。 ## 1. 腾讯云服务器部署 Python 3.7:学生党白嫖 15 天算力的求生指南

如果你是计算机视觉方向的学生,一定经历过这种时刻:本地笔记本跑一个训练脚本,风扇狂转两个小时,结果一看 loss 曲线直接发散;想换个参数量更大的模型,显存直接不够用。疫情期间被困在家里没有实验室服务器可用,我当时就是用腾讯云的免费服务器额度把 Python 3.7 + PyTorch 代码跑起来的,从申请免费额度到最终python xxx.py跑通,完整步骤和坑都在这篇笔记里。

我把这套流程完整走了一遍,从新用户免费申请 15 天服务器、重装 Ubuntu 系统、用 FileZilla 上传代码、安装 Python 3.7、到给服务器装上 CPU 版 PyTorch,每一步的报错和排查都记录下来。整个过程不依赖于本地有 GPU,也不要求服务器有多高的配置,普通学生项目完全够用。

2. 免费服务器申请与系统重装:从 15 天额度到 Ubuntu 环境

2.1 新用户认证与免费额度领取

作为腾讯云新用户,通过微信登录并完成实名认证和手机号认证后,可以在官方渠道领取到 15 天的免费服务器使用权限。具体路径是登录云服务器控制台页面,找到“个人认证福利”,点击领取即可。注意,免费额度领取的前提是完成实名认证与手机号认证,这两个步骤缺一不可。

免费领取的服务器性能不高,通常是 1 核 2G 或 2 核 4G 的入门配置,但对于跑 Python 代码、做模型推理验证、临时搭个 Web 服务来说一般够用。如果后续需要更高配置,控制台可以直接付费续费或更换套餐。

2.2 系统默认 CentOS,重装为 Ubuntu 的具体操作

系统默认的镜像为 CentOS,如果你更习惯使用 Debian 系的 Linux 系统,需要先重装系统。在云服务器实例列表中,点击实例左下角的“更多”,选择“重装系统”,在镜像类型里选择“公共镜像”,然后在下方列表中找到 Ubuntu 系统(比如 Ubuntu 18.04 或 20.04),点击确认后系统会自动开始重装。

重装过程大约需要 1~3 分钟,重装完成后系统的用户名会默认变成 ubuntu 而不是 root,这一点在后续登录、上传文件时要注意区分。重装系统会清空系统盘数据,但不会影响数据盘,如果你的实例有挂载数据盘,重装前最好先备份。

2.3 登录虚拟机的终端与初始密码配置

重装完成之后,在控制台实例列表中点击“登录”,选择“立即登录”会进入一个网页版终端会话。这里的登录密码不是控制台的登录密码,而是服务器实例本身的密码——如果是免费领取的,初始密码一般会以短信或邮件形式发给你。如果你用微信公众号申领的,密码会在公众号的消息记录里。

网页终端适合应急管理,但真正的代码运行建议用本地终端通过 SSH 登录。常见做法是使用 ssh 命令直接连入服务器:

ssh ubuntu@你的公网IP

参数说明:ubuntu是重装后的系统默认用户名,如果你的系统没有重装而是使用默认 CentOS,用户名应为root。公网 IP 在控制台实例列表中可以查到,是类似129.211.xx.xx的地址。第一次连接时终端会提示确认主机指纹,输入yes回车后输入密码即可登录。

如果服务器默认密码太复杂,登录后建议立即修改:

passwd

修改密码时系统不会显示输入内容,这是正常的,输入两次新密码后回车即可。这一步能避免后续 FileZilla 或代码部署时反复查初始密码的麻烦。

3. 本地依赖导出与文件上传:把项目从笔记本搬到服务器

3.1 pip freeze 导出本地依赖列表

在本地命令行中,cd 到你的代码所在路径,执行以下命令导出当前 Python 环境的所有依赖包:

pip freeze > requirements.txt

逻辑说明:pip freeze会列出当前 Python 环境中所有通过 pip 安装的包及对应版本号,>重定向输出到 requirements.txt 文件。这样服务器端就能通过pip3 install -r requirements.txt一键安装完全相同的依赖环境。

我一般建议在导出依赖前先激活你要用的那个虚拟环境,否则会把全局环境里一堆无关的包也导进去。如果你本地用的是 Anaconda,先执行conda activate 你的环境名再执行上面的命令,导出的列表更干净。

3.2 用 FileZilla 上传项目文件

服务器和本地之间的文件传输,我一般用 FileZilla。下载安装后,在界面顶部填写以下连接信息:

  • 主机:你的服务器公网 IP,例如129.211.xx.xx
  • 用户名:ubuntu(如果是 CentOS 原生系统则填root)
  • 密码:上一步修改后的服务器登录密码
  • 端口:22(SSH 默认端口,无需改动)

点击“快速连接”后,右侧窗口会显示服务器文件系统,左侧是本地目录。把本地项目文件夹直接拖拽到右侧你希望存放的路径(比如/home/ubuntu/project/)即可完成上传。

上传完成后,回到 SSH 终端验证一下文件是否完整:

ls -l /home/ubuntu/project/

如果文件出现在列表中,说明上传成功。这一步是后续所有操作的基础,文件没传全后面怎么调都会报 module not found 之类的错误。

3.3 服务器初始 Python 版本与 Python 3.7 的安装

腾讯云服务器初始的 Python 版本一般是 2.7,Ubuntu 18.04 自带 Python 3.6,Ubuntu 20.04 自带 Python 3.8。如果需要运行 Python 3.7 的代码,直接使用系统自带的 Python 3.6 或 3.8 可能会遇到语法不兼容的问题,所以需要单独安装 Python 3.7。

我一般通过源码编译的方式来装 Python 3.7:

sudo apt update sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \ libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-dev wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz tar -xzf Python-3.7.12.tgz cd Python-3.7.12 ./configure --enable-optimizations make -j4 sudo make install

参数说明:--enable-optimizations会启用 Python 的优化编译,运行速度会更好,但编译时间会变长;make -j4是并行编译,4 表示用 4 个核心同时编译,如果你的服务器只有 1 核,改成make即可。编译安装通常需要 10~20 分钟,属正常现象。

安装完成后验证版本:

python3.7 --version

如果输出Python 3.7.12说明安装成功。注意,系统自带的python3命令仍然指向旧版本,需要用python3.7来显式调用。这一步是最容易翻车的,网上很多教程没有说明python3和python3.7的区别,导致后续 pip3 安装的包全进了旧版本的库里。

4. 依赖安装与 CPU 版 PyTorch:在无 GPU 服务器上跑深度学习代码

4.1 安装 pip3 与环境依赖

安装完 Python 3.7 后,需要先确认 pip 是否可用。如果是通过源码编译安装的,一般会自带 pip。验证方式如下:

python3.7 -m pip --version

如果提示没有 pip,则通过以下命令安装:

sudo apt install -y python3-pip

注意,这里的 pip3 仍然可能指向旧版本的 Python 3.6 或 3.8,为了确保安装到 Python 3.7 对应的库里,建议统一使用:

python3.7 -m pip install --upgrade pip

之后所有依赖安装都用python3.7 -m pip install这个前缀,而不是直接使用pip3 install。这是和本地环境最大的一个差异点,我在这上面栽过跟头:用pip3 install装了 numpy,但python3.7 xxx.py运行时仍然提示找不到 numpy。

4.2 requirements.txt 一键安装依赖

进入你上传的项目目录,执行以下命令批量安装所有依赖:

cd /home/ubuntu/project/ python3.7 -m pip install -r requirements.txt

如果项目比较大、依赖比较多,建议加一个镜像源加速:

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

参数说明:-i指定了 pip 的下载源为清华镜像,服务器在国内访问官方 PyPI 源的速度通常很慢,经常会出现 timeout 导致安装失败。使用国内镜像源后,下载速度会快很多,依赖安装基本几分钟内就能完成。

这里有一个前提要提醒:如果本地开发环境用的是 Anaconda,requirements.txt里通常只包含通过 pip 安装的包,conda 环境里的一些包(比如 cudatoolkit、mkl)在 requirements 里不会有对应项。这种场景下,推荐逐个使用python3.7 -m pip install安装,或者先在本地跑一遍pip freeze再上传,否则很容易装完一堆仍然报缺少模块。

4.3 安装 CPU 版 PyTorch:无 GPU 的正确选择

这台免费服务器没有配置 GPU,因此如果直接运行 PyTorch 代码,需要安装不带 CUDA 的版本。带 CUDA 版的 PyTorch 在 import 时通常会隐式加载libcudart.so,没有 GPU 或 CUDA 驱动会导致启动失败。

CPU 版 PyTorch 的安装方式是通过官方 wheel 直接指定:

python3.7 -m pip install https://download.pytorch.org/whl/cpu/torch-1.0.1.post2-cp37-cp37m-linux_x86_64.whl python3.7 -m pip install torchvision

参数说明:torch-1.0.1.post2-cp37-cp37m-linux_x86_64.whl对应的是 Python 3.7、Linux x86_64 架构的 CPU 版 wheel,cp37表示 CPython 3.7,cp37m表示使用 pymalloc 的 CPython 3.7。如果你的 Python 是 3.8 或 3.9,需要去 PyTorch 官方提供的 whl 列表里找对应版本。torchvision会依赖 torch,安装时自动检测到已有 torch 后不会重复下载。

安装完后,在终端验证是否可用:

python3.7 -c "import torch; print(torch.__version__)"

如果输出类似1.0.1.post2,说明安装成功。这一步也是最容易疑惑的地方——明明装了 torch,为什么import torch仍然报ModuleNotFoundError?绝大多数情况下是 pip 工具版本指向的系统 Python 和你执行脚本的 Python 版本不一致,用python3.7 -m pip能解决掉这个坑。

4.4 关于 Anaconda 与服务器环境的差异处理

如果你的本地环境主要基于 Anaconda,而服务器上没有安装 Anaconda,那么torch相关的安装方式会有区别。在 conda 环境里,PyTorch 通常通过 conda 源安装,它会自动带上 MKL、OpenMP 等底层优化库;而服务器上直接用 pip 安装的 torch,不会自动安装这些底层优化库,因此运行速度可能略慢。

另一种做法是在服务器上安装 Miniconda,然后把 conda 环境完整导出再导入,这样环境一致性好很多,但会占用额外的磁盘空间和内存。如果单纯是想快速跑通项目,直接 pip 装依赖就够了;如果你要长期使用这个服务器做实验,我更建议装 Miniconda:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh

安装完成后用conda create -n myenv python=3.7创建一个干净的环境,再conda install pytorch-cpu torchvision-cpu -c pytorch装 CPU 版 PyTorch。这样做的好处是以后本地 conda 环境导出的 yaml 文件可以直接在服务器上复现,不会再出现 pip 装环境各种缺包的问题。

5. 避坑指南:免费服务器部署代码的常见问题与排查记录

5.1 FileZilla 上传成功后目录里看不到文件

现象:本地拖拽上传时提示成功,但 SSH 终端ls看不到对应文件。

原因:FileZilla 默认连接的是 SFTP 协议,连接成功后登录的是 ubuntu 用户的家目录。如果你把文件拖到了“远程站点”的某个目录,但那个目录和你在终端里cd进入的目录不是同一个,就会产生“上传成功却看不到”的假象。

解决:先确认 FileZilla 右侧边栏当前显示的目录路径,比如/home/ubuntu/,然后在终端执行:

cd /home/ubuntu/ ls -l

保持一致后就正常了。另外检查你上传的文件是否因为权限问题被隐藏,普通文件不需要改权限,如果上传的是可执行脚本,可能需要chmod +x 文件名。

5.2 用源生 pip3 安装的 pytorch 版本与本地不一致

现象:按照博客教程执行pip3 install torch torchvision,安装后import torch报错,或者torch.__version__与本地不符,比如本地是 1.8.0 而服务器上是 1.0.1。

原因:服务器系统默认的pip3指向的是系统自带的 Python 版本,而不是你编译安装的 Python 3.7。直接用pip3 install会把包装到 Python 3.6 或 3.8 的 site-packages 里。

解决:统一使用python3.7 -m pip install来安装,并在安装前先检查当前 Python 版本:

python3.7 --version python3.7 -m pip --version

确保 pip 对应的 Python 版本与自己代码运行使用的 Python 版本一致,这是整个部署流程里最容易踩的大坑。

5.3 安装了 CPU 版 PyTorch 但仍然报 CUDA 相关错误

现象:代码中出现了torch.cuda.is_available()相关判断,运行时报错AssertionError: Torch not compiled with CUDA enabled。

原因:你安装的是 CPU 版 torch,但代码逻辑里没有做 CUDA 可用性判断,直接调用了.cuda()方法或to('cuda')。

解决:在代码开头做一次判断:

import torch device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') model = model.to(device)

如果不想改代码,还有一种更直接的方法:设置环境变量让 torch 默认在 CPU 上运行:

export CUDA_VISIBLE_DEVICES="" python3.7 train.py

但这种方法有时不生效,特别是代码里硬编码了.cuda(),所以我更建议改成上述动态设备判断的方式。

5.4 云服务器上 apt 安装包时报锁错误或源错误

现象:执行sudo apt update或安装依赖时,提示Could not get lock /var/lib/dpkg/lock-frontend,或者Unable to locate package python3-pip。

原因:前一个 apt 进程没有正常退出,锁文件残留导致后续安装无法进行。

解决:先强制清理锁文件:

sudo rm /var/lib/dpkg/lock-frontend sudo rm /var/lib/cache/apt/archives/lock sudo dpkg --configure -a

然后重新执行sudo apt update && sudo apt install -y python3-pip。如果是找不到包,先执行sudo apt update刷新软件源,再尝试安装。服务器刚开通时 apt 源是空的,不 update 直接 install 大概率会失败。

5.5 运行多个代码任务时内存不足导致进程被杀

现象:执行 python 脚本运行到一半,终端提示Killed,或者进程直接消失。

原因:免费服务器的内存一般为 2G 左右,Python + PyTorch 推理 + 数据集加载,内存占用很容易超出物理内存,触发了 Linux 的 OOM Killer。

解决:优化代码的内存占用,例如分批加载数据、使用with torch.no_grad()推理减少中间变量缓存、降低 batch size。也可以在运行前先确认服务器内存情况:

free -h

如果内存长期处于 90% 以上,建议升级套餐或使用 Swap 分区做临时扩展:

sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

这能缓解内存不够的问题,但不是长久之计。

6. 进阶技巧:后台运行与快速复现同一套环境

部署完代码后,常见的运行方式是直接python3.7 你的文件.py,但这种方式在断开 SSH 连接后进程就会终止。更可靠的做法是使用nohup或screen,让代码在服务器后台持续运行:

nohup python3.7 你的文件.py > output.log 2>&1 &

参数说明:nohup让进程忽略 SIGHUP 信号,即使关闭终端也不会被杀;> output.log将标准输出重定向到 output.log 文件;2>&1会把标准错误输出也合并到同一文件中;&让命令在后台运行。之后通过tail -f output.log查看实时输出。

如果代码运行时间很长,我更推荐用screen:

screen -S train python3.7 train.py

按Ctrl+A然后按D可以脱离会话,代码继续在服务器后台运行;下次重新连接后用screen -r train回到之前的会话,这样可以随时恢复查看运行状态,比 nohup 更好用。

如果频繁在本地和服务器之间切换环境,可以用 conda 导出环境配置,在服务器端一键恢复:

conda env export > environment.yaml

上传到服务器后:

conda env create -f environment.yaml

如果没有 Miniconda,只靠 pip 也能达到类似效果。关键是每次做环境调整后,都重新生成 requirements.txt,否则时间一长,本地和服务器环境的版本差异会变成一个黑匣子,你根本不记得当初跑通时到底用的是哪个版本的 numpy、opencv 还是 torchvision。

从那以后我每次部署 Python 项目到服务器,都会强制走一遍这个流程:申请/充值资源、确认系统版本、下载对应 Python 解释器、锁定 pip 版本、上传代码、安装依赖、后台跑通、nohup 或 screen 保活。这套思路在腾讯云、其他云厂商、甚至本地虚拟机里都能复用,核心原则就是先锁定 Python 版本,再锁定依赖,最后再管运行方式。希望这篇笔记能帮你从“部署跑不起来”的困境里走出来,把时间真正花在代码本身。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询