在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
相关产品推荐
相关产品推荐

