GitHub Action中sudo执行coverage模块提示找不到的解决问询
解决GitHub Action中sudo执行coverage找不到模块的问题
问题原因
sudo执行命令时会切换到root用户的环境,而你通过actions/setup-python安装的Python和coverage模块属于普通runner用户,root环境默认使用系统自带的/usr/bin/python,该环境未安装coverage,因此报错。
方法1:修复目录权限,无需sudo
既然需要sudo是因为目录所有权问题,直接将目标目录的权限修改为当前runner用户所有,之后即可正常执行合并命令:
- name: Fix coverage directory permissions run: sudo chown -R $USER:$USER ./docker/data/coverage - name: Merge coverage reports working-directory: ./docker/data/coverage run: python -m coverage combine .coverage-*
方法2:让sudo使用当前用户的Python环境
如果必须保留sudo,通过which python获取当前用户环境中已配置好的Python路径,让sudo使用该路径执行命令,确保加载已安装的coverage模块:
- name: Merge coverage reports working-directory: ./docker/data/coverage run: sudo $(which python) -m coverage combine .coverage-*
方法3:(不推荐)给root用户安装coverage
直接在root环境下安装coverage,这样sudo执行时就能找到模块,但会污染系统Python环境,不建议采用:
- name: Install coverage for root run: sudo pip install coverage - name: Merge coverage reports working-directory: ./docker/data/coverage run: sudo python -m coverage combine .coverage-*
内容的提问来源于stack exchange,提问作者NLion74
相关产品推荐
相关产品推荐

