为何subprocess无法找到phantomjs?实为可执行文件自身异常
问题原因与解决方法
核心问题
你遇到的FileNotFoundError是误导性错误,实际原因是树莓派5的64位ARM架构无法运行32位的PhantomJS可执行文件,或缺少32位程序运行所需的依赖库。
从file命令输出能明确看到:
/usr/bin/phantomjs: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, ...
树莓派5采用64位ARMv8架构(aarch64),而当前的PhantomJS是32位ARMv7程序,若系统未安装32位运行时库,就会触发这种“找不到文件”的错误(实际是找不到32位动态链接器或依赖组件)。
解决步骤
方法1:安装32位运行时依赖
在树莓派的Debian/Ubuntu系统中,安装32位ARM的基础C库:
sudo apt update sudo apt install libc6:armhf
安装完成后,重新尝试运行PhantomJS或你的Python脚本即可。
方法2:替换为64位无头浏览器(推荐)
PhantomJS已停止维护,Selenium也不再对其提供支持,更稳妥的方案是改用Headless Chrome:
- 安装Chrome浏览器及驱动:
sudo apt install chromium-browser chromium-chromedriver
- 修改Python代码适配Chrome Headless:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('--headless=new') options.add_argument('--no-sandbox') wd = webdriver.Chrome(options=options)
内容的提问来源于stack exchange,提问作者John Kitchin
相关产品推荐
相关产品推荐

