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

Serverless部署出现无效跨设备链接错误,求排查原因

问题

本地安装sendgrid包后运行正常,但执行serverless deploy时失败,报错信息如下:

ERROR: Exception:
Traceback (most recent call last):
  File "/var/lang/lib/python3.8/shutil.py", line 791, in move
    os.rename(src, real_dst)
OSError: [Errno 18] Invalid cross-device link: '/tmp/pip-target-i40hnhmr/lib/python/jmespath-1.0.1.dist-info' -> '/var/task/jmespath-1.0.1.dist-info'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/var/lang/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
    status = run_func(*args)
  File "/var/lang/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 247, in wrapper
    return func(self, options, args)
  File "/var/lang/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 566, in run
    self._handle_target_dir(
  File "/var/lang/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 625, in _handle_target_dir
    shutil.move(os.path.join(lib_dir, item), target_item_dir)
  File "/var/lang/lib/python3.8/shutil.py", line 807, in move
    copytree(src, real_dst, copy_function=copy_function,
  File "/var/lang/lib/python3.8/shutil.py", line 557, in copytree
    return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
  File "/var/lang/lib/python3.8/shutil.py", line 458, in _copytree
    os.makedirs(dst, exist_ok=dirs_exist_ok)
  File "/var/lang/lib/python3.8/os.py", line 223, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/var/task/jmespath-1.0.1.dist-info'

已尝试切换Docker文件共享模式(VirtioFS/osxfs Legacy)、删除Docker镜像及~/Library/Caches/serverless-python-requirements/缓存,执行sudo serverless deploy/sudo serverless package仍报错,求问题原因。

问题原因

  • 跨设备移动+权限限制双重冲突:serverless-python-requirements插件在Docker容器内安装依赖时,先尝试用os.rename把/tmp(容器临时文件系统)下的依赖目录移到/var/task(挂载的本地项目目录),但这两个路径属于不同设备,触发Invalid cross-device link错误;随后shutil自动降级为复制操作,但容器内非root用户对挂载的/var/task目录没有足够写入权限,导致最终的PermissionError。
  • sudo权限未同步到容器内:本地执行sudo serverless时,仅提升了本地进程的权限,但Docker容器内仍以默认的非root用户运行,无法获得挂载目录的写入权限,sudo操作无效。
  • 容器内残留缓存未彻底清理:仅删除本地缓存和镜像可能不够,容器内的临时文件或旧权限配置未被完全清除,导致重复触发相同错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:52:53