GitHub Actions编译Python脚本及复制文件执行报错问题咨询
GitHub Actions 工作流配置问题说明
你的配置一共存在两处核心错误,分别对应两个报错现象:
问题1:downloads目录下找不到abc.pyc文件
- 根因:Python 3.x 版本的
py_compile模块默认不会把编译生成的.pyc文件输出到执行命令的当前目录:- 默认规则下,
.pyc文件会存放在被编译的源文件(即../Library/abc.py)同级的__pycache__子目录中,文件名会带上Python版本后缀,例如abc.cpython-37.pyc,完整路径为../Library/__pycache__/abc.cpython-37.pyc - 你执行
ls时当前目录是downloads,自然看不到存放在Library目录下的pyc文件。
- 默认规则下,
问题2:COPY命令返回127错误码
- 根因:
COPY是Dockerfile的专属语法指令,不是Linux Shell的标准命令,Shell环境下复制文件的命令是全小写的cp。错误码127是系统找不到指定命令的标准返回值,和文件是否存在没有关系。 - 路径校验:从运行日志看,执行
pwd时当前路径确实是/__w/repo_name/repo_name/downloads,../qwe.txt的路径完全正确,只要把COPY换成cp就能正常执行复制操作。
修正后的run段代码参考
- name: Build Compiled files run: | mkdir -p downloads cd downloads pwd # 直接指定pyc文件输出到当前downloads目录 python3 -c "import py_compile; py_compile.compile('../Library/abc.py', cfile='./abc.pyc')" ls # 替换大写COPY为小写cp命令 cp ../qwe.txt qwe.txt
可选方案:如果你不需要自定义pyc的输出路径,也可以在执行完默认编译命令后,把生成的pyc文件移动到downloads目录:
python3 -m py_compile ../Library/abc.py mv ../Library/__pycache__/abc.cpython-37.pyc ./abc.pyc
内容的提问来源于stack exchange,提问作者qwerty
相关产品推荐
相关产品推荐

