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

在GitHub Actions中使用Python时遇到的路径问题

在GitHub Actions中使用Python时遇到的路径问题

嘿,我太懂你这种在GitHub Actions里折腾Python路径的烦恼了!之前我也踩过类似的坑,明明本地跑的好好的脚本,一到Actions里就报模块找不到,核心就是PYTHONPATH没配置对。

看你写了workflow_import.py里的load_modules函数,目前的代码只打印了SOURCES_PATH,还没真正把路径加到Python的模块搜索路径里哦。咱得把这个函数补全,才能让Python找到你的自定义模块:

import os
import sys

def load_modules():
    if 'SOURCES_PATH' in os.environ:
        print('检测到SOURCES_PATH,正在添加到模块搜索路径...')
        # 按系统路径分隔符拆分(Linux用冒号,Windows用分号)
        sources_paths = os.environ['SOURCES_PATH'].split(os.pathsep)
        for path in sources_paths:
            # 避免重复添加路径
            if path not in sys.path:
                sys.path.append(path)
                print(f"已添加路径: {path}")

接下来,在你的GitHub Actions工作流文件里,得先把SOURCES_PATH环境变量设置对,比如你的脚本分散在src/和utils/目录下,就可以这么写:

jobs:
  run-scripts:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 配置Python环境
        uses: actions/setup-python@v5
        with:
          python-version: '3.11' # 换成你项目用的Python版本
      - name: 设置SOURCES_PATH环境变量
        run: echo "SOURCES_PATH=$(pwd)/src:$(pwd)/utils" >> $GITHUB_ENV
      - name: 运行主脚本
        run: python your_main_script.py

这里还有几个要注意的小细节:

  • 如果是在Windows runner上跑,环境变量的设置命令要改成echo "SOURCES_PATH=$(pwd)/src;$(pwd)/utils" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8,因为Windows用分号当路径分隔符
  • 别忘了在workflow_import.py里导入sys模块,不然没法操作sys.path,这是很多人容易忽略的点
  • 调试的时候,可以在脚本开头加一行print("当前模块搜索路径:", sys.path),能快速排查哪个路径没被正确添加

当然,如果你不需要动态处理路径,其实还有更直接的方式——在工作流里直接设置PYTHONPATH环境变量,Python会自动识别这个变量并把路径加入搜索列表:

- name: 设置PYTHONPATH
  run: echo "PYTHONPATH=$(pwd)/src:$(pwd)/utils" >> $GITHUB_ENV

这种方式省得写额外的导入函数,适合路径固定的场景。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:23:12