如何在GitHub Actions中导入自定义Python模块?
解决GitHub Actions中Python模块导入失败问题
在GitHub Actions Windows环境中运行Python脚本时,出现ModuleNotFoundError: No module named 'code.data'错误,本地运行正常,已尝试添加__init__.py和sys.path.append("../")但无效。项目结构如下:
repo/ |-- code/ | |-- data/ | | |-- constants.py |-- test/ | |-- test_1.py
方案1:在脚本中动态添加正确的项目根目录到Python路径
修改test/test_1.py,替换原来的路径添加代码,确保无论脚本运行环境如何,都能精准定位项目根目录:
import sys import os # 获取当前脚本所在目录的上层目录(即repo根目录) project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(project_root) from code.data.constants import DATETIME_FORMAT
方案2:在GitHub Actions中设置PYTHONPATH环境变量
在运行Python脚本的步骤前,新增环境变量配置步骤,将仓库根目录直接加入Python的模块搜索路径:
- name: Set Python path run: | echo "PYTHONPATH=${{ github.workspace }}" | Out-File -FilePath $env:GITHUB_ENV -Append - name: Run python code run: | python test/test_1.py
${{ github.workspace }}是GitHub Actions内置变量,指向仓库的根目录,设置后Python会自动从该目录查找模块。
方案3:切换工作目录并以模块方式运行脚本
如果使用相对导入,需先切换到test目录,再以模块形式运行脚本:
- name: Run python code run: | cd test python -m test_1
同时修改test_1.py中的导入语句为相对路径格式:
from ..code.data.constants import DATETIME_FORMAT
注意:此方式必须使用-m参数以模块形式运行,直接执行脚本会触发相对导入错误。
内容的提问来源于stack exchange,提问作者jordp1
相关产品推荐
相关产品推荐

