使用requirements.txt安装PySpark时pypandoc依赖安装失败求助
问题解决:requirements.txt安装PySpark时pypandoc依赖失败的问题
这个问题的核心是PySpark的setup.py将pypandoc列为了setup_requires依赖——这意味着在安装PySpark的过程中,setuptools会尝试自行下载并安装pypandoc,而不会严格遵循requirements.txt里的安装顺序。再加上错误日志里的[Errno 97] Address family not supported by protocol,大概率是你的环境中pip默认尝试用IPv6连接PyPI失败,导致setuptools无法自动获取pypandoc。
下面是几个可行的解决方案:
方案1:禁用构建隔离(推荐)
使用pip的--no-build-isolation参数,让setuptools直接使用当前环境中已安装的依赖(也就是requirements.txt里先安装的pypandoc),而不是自行下载:
pip install --no-build-isolation -r requirements.txt
确保你的requirements.txt里pypandoc排在pyspark前面:
pypandoc pyspark
方案2:强制pip使用IPv4
针对IPv6连接失败的问题,强制pip通过IPv4访问PyPI,这样setuptools在安装PySpark时能正常下载pypandoc:
pip install -r requirements.txt --ipv4
如果存在缓存干扰,可以加上清除缓存的参数:
pip install -r requirements.txt --ipv4 --no-cache-dir --force-reinstall
方案3:分步安装(兼容所有场景)
如果上面的方法都不生效,你可以拆分安装步骤,先确保pypandoc完全安装完成,再安装剩余依赖:
pip install pypandoc && pip install -r requirements.txt
这种方式完全复刻了你手动分开安装的逻辑,避开了PySpark安装时的自动依赖下载流程。
内容的提问来源于stack exchange,提问作者HHH
相关产品推荐
相关产品推荐

