把本地脚本搬到华为云 AI DevSpace 上跑:一次完整记录
手上有一批平时用来整理数据的 Python 脚本,一直在本机跑。问题很具体:换台电脑就要重装一遍依赖,Python 版本不一致时还会报各种莫名其妙的错。趁着体验华为云 AI 开发者空间(AI DevSpace),我把其中一个脚本完整搬上去跑了一遍,记录整个过程。
为什么要搬
本地跑脚本最麻烦的不是写代码,是维护环境。我遇到过几次:升级某个依赖后,原来能跑的脚本直接崩了,回滚又牵出一堆连带问题。DevSpace 提供的是一个开箱即用、随时可丢弃的云端环境,正好对上这个痛点——环境坏了换一个就行,不用再花时间救。
迁移过程
1. 建环境、装依赖
进入空间后先把项目骨架搭起来:
mkdir -p data-tools/{src,output}
cd data-tools
python3 -m venv .venv
source .venv/bin/activate
pip install pandas openpyxl
预置的工具链已经比较全,Python 和 pip 都是现成的,省掉了装解释器这一步。
2. 把脚本改成可配置
原来脚本里输入、输出路径都是写死的绝对路径,在云上肯定跑不通。改成用环境变量读取:
import os
from pathlib import Path
BASE = Path(os.getenv("DATA_DIR", "./data"))
OUT = Path(os.getenv("OUT_DIR", "./output"))
OUT.mkdir(parents=True, exist_ok=True)
这样同一份代码在本地和云上都能用,只是启动时传不同的变量。
3. 跑通并核对结果
export DATA_DIR=./samples
export OUT_DIR=./output
python src/merge.py
输出目录里生成了合并后的结果文件,用 head 抽查了几行,字段对齐正常,和本机跑出来的结果一致。
踩到的两个坑
第一个是路径分隔符。 脚本里有一处拼接了硬编码的反斜杠路径,在云环境的 Linux 下直接找不到文件。换成 pathlib 的 / 操作符之后就正常了,这也是后来我把所有路径处理都改成 Path 对象的原因。
第二个是中文文件名。 最初用普通方式读写入口文件,遇到中文名称的文件会静默失败——不报错,但就是读不出来,排查了半天才发现是编码问题。改成显式指定 UTF-8 编码后解决:
with open(path, encoding="utf-8") as f:
raw = f.read()
实际体验下来的感受
省时间的是环境,不是算力。 日常量级的数据处理,感受不到性能差异,但省下的是装环境、修环境的那些时间,这部分是实打实的。
适合拿来做一次性的验证。 比如要试一个新库、跑一份临时数据,用完不用管,也不用担心污染本地环境。
要注意的是数据敏感性。 涉及个人隐私或业务数据的脚本,不建议直接搬到共用环境里跑,这个边界得自己把握。
小结
这次迁移本身没有技术难度,收益却很实在:一份脚本从此和环境解耦,到哪都能跑。如果你手上也有那种"只在自己电脑上能跑"的脚本,抽半小时搬到云上,后面会省心很多。
- 点赞
- 收藏
- 关注作者
评论(0)