You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将自定义Python模块加载至基于S3的TLJH Notebook?

在TLJH(S3存储)中导入同路径自定义模块的解决方法

可以实现。Python默认仅从本地文件系统的sys.path路径查找模块,而S3路径不在默认搜索范围内,因此需要手动配置让Python定位到S3上的模块文件,以下是具体方案:

方法一:临时添加S3路径到sys.path

在笔记本开头执行以下代码,将当前笔记本所在的S3路径加入Python模块搜索路径:

import sys
from s3fs import S3FileSystem

# 初始化S3文件系统连接
s3 = S3FileSystem()
# 替换为你的笔记本实际所在S3路径(例如s3://your-bucket/notebooks/)
current_s3_dir = "s3://your-bucket/path/to/notebooks/"
# 将S3路径添加到模块搜索路径
sys.path.append(current_s3_dir)

# 现在可以正常导入模块
from funcs import *

若未安装s3fs库,先执行!pip install s3fs完成安装。

方法二:通过挂载S3目录实现长期导入

如果TLJH服务器支持S3挂载工具(如s3fs-fuse),可以将目标S3目录挂载到本地文件系统,让Python像访问本地文件一样读取模块:

  1. 在服务器上安装s3fs-fuse工具
  2. 将目标S3桶挂载到本地目录,例如:s3fs your-bucket /mnt/s3-notebooks
  3. 把挂载目录添加到sys.path,或在Python的site-packages目录下创建.pth文件,写入挂载路径(比如/mnt/s3-notebooks),实现永久生效的模块路径配置

方法三:使用importlib动态加载模块

若不想修改sys.path,可以直接读取S3上的模块内容并动态导入:

import importlib.util
from s3fs import S3FileSystem

s3 = S3FileSystem()
# 替换为funcs.py的实际S3路径
module_s3_path = "s3://your-bucket/path/to/funcs.py"

# 读取模块文件内容
with s3.open(module_s3_path, 'r') as f:
    module_content = f.read()

# 创建并加载模块对象
spec = importlib.util.spec_from_loader("funcs", loader=None)
funcs = importlib.util.module_from_spec(spec)
exec(module_content, funcs.__dict__)

# 使用模块内的函数,例如 funcs.your_custom_function()

注意事项

  • 确保TLJH运行用户拥有目标S3路径的读取权限
  • 提前配置好AWS访问凭证(如环境变量、~/.aws/credentials文件),保证S3连接正常

内容的提问来源于stack exchange,提问作者Stuart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:54:56