执行git push heroku master推送Django项目时出现No such file or directory错误的解决办法
修复Heroku推送Django项目时的OSError问题
我之前帮好几个开发者搞定过一模一样的问题,别慌,这本质是pip缓存损坏或者依赖配置出了小问题,咱们一步步来解决:
1. 清理本地pip缓存,重建依赖环境
这个报错里的路径是pip缓存里的无效目录,先把本地的pip缓存清干净:
- 执行命令清空缓存:
pip cache purge - 如果用了虚拟环境,先删掉旧的虚拟环境,重新创建并安装依赖:
deactivate # 退出当前虚拟环境 rm -rf your_venv_name # 替换成你的虚拟环境名称 python -m venv your_venv_name source your_venv_name/bin/activate # Windows系统用your_venv_name\Scripts\activate pip install -r requirements.txt
2. 更新requirements.txt中的依赖版本
报错涉及到alabaster包,旧版本的alabaster可能存在缓存路径的bug,咱们确保用最新稳定版:
- 打开
requirements.txt,如果里面指定了alabaster的旧版本,改成alabaster>=0.7.12(或者直接写alabaster让pip自动拉取最新版) - 也可以直接升级本地的alabaster,然后更新requirements.txt:
pip install --upgrade alabaster pip freeze > requirements.txt
3. 让Heroku安装依赖时跳过缓存
如果本地修复后推送还是报错,咱们给Heroku加个pip配置,强制跳过缓存安装:
- 在项目根目录新建
pip.conf文件,写入以下内容:[global] no-cache-dir = true - 把这个文件加入git并提交:
git add pip.conf git commit -m "Add pip config to skip cache on Heroku"
4. 重置Heroku的远程构建缓存
如果前面的方法都没效果,直接清空Heroku那边的构建缓存:
- 执行命令:
heroku builds:cache:purge - 然后重新推送项目:
git push heroku master
一般来说,按这个顺序操作,这个OSError问题就能解决了。
内容的提问来源于stack exchange,提问作者Winston
相关产品推荐
相关产品推荐

