GitHub Action安装pandas_market_calendars后无法导入问题求助
解决GitHub Action中pip安装模块后仍出现ModuleNotFoundError的问题
问题场景
我的GitHub Action工作流已正常运行一个月,今日执行时出现异常:明明通过pip安装了pandas_market_calendars包,但运行Python脚本update_raw_data.py时,出现错误提示:
ModuleNotFoundError: No module named 'pandas_market_calendars'
附上我的工作流YAML代码:
name: Daily Python Script on: schedule: - cron: '15 20 * * *' workflow_dispatch: jobs: run-script: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.9' - name: Install dependencies run: | python -m pip install --upgrade pip pip install pandas pip install numpy pip install yfinance pip install pandas_market_calendars pip install datetime pip install pytz - name: Run script run: | python update_raw_data.py && python prepro.py - name: Commit changes ... removed by me
完整错误信息:
Run python update_raw_data.py && python prepro.py Traceback (most recent call last): File "/home/runner/work/stock_prediction/stock_prediction/update_raw_data.py", line 7, in <module> import pandas_market_calendars as mcal ModuleNotFoundError: No module named 'pandas_market_calendars' Error: Process completed with exit code 1.
解决方案
1. 统一Python命令,避免环境不一致
Ubuntu runner环境中可能同时存在多个Python版本,直接使用python可能指向系统默认版本(比如3.8),而actions/setup-python配置的是3.9,导致模块安装和脚本运行用的不是同一个环境。
修改方式:把所有python和pip替换为python3和pip3,确保使用setup-python配置的环境:
- 安装依赖步骤修改:
- name: Install dependencies run: | python3 -m pip install --upgrade pip pip3 install pandas numpy yfinance pandas_market_calendars pytz
- 运行脚本步骤修改:
- name: Run script run: | python3 update_raw_data.py && python3 prepro.py
注意:datetime是Python标准库,无需通过pip安装,直接删除对应安装命令即可。
2. 升级setup-python到最新版本
旧版actions/setup-python@v2可能存在环境初始化的潜在问题,建议升级到最新稳定版(当前为v5),确保Python环境配置正确:
- name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.9'
3. 添加调试步骤验证模块安装状态
如果问题仍存在,可以在安装依赖后添加验证步骤,确认模块是否成功安装到当前环境:
- name: Verify installed packages run: | python3 -m pip list | grep pandas_market_calendars python3 -c "import pandas_market_calendars as mcal; print(mcal.__version__)"
这一步会输出模块的安装状态和版本号,帮助排查环境是否匹配。
内容的提问来源于stack exchange,提问作者Chi-Yuan Li
相关产品推荐
相关产品推荐

