You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4下py-solc-x编译Solidity报solc未安装错误解决方案咨询

树莓派4下py-solc-x提示solc未安装的解决方法

问题复现

  • 目标:将Solidity合约编译为可供Python调用的形式
  • 已执行操作:在树莓派4设备运行pip install py-solc-x安装依赖,安装输出显示py-solc-x 1.1.1及所有依赖包均已满足要求:
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: py-solc-x in /home/talbot-raspberry/.local/lib/python3.9/site-packages (1.1.1)
Requirement already satisfied: requests<3,>=2.19.0 in /usr/lib/python3/dist-packages (from py-solc-x) (2.25.1)
Requirement already satisfied: semantic-version<3,>=2.8.1 in /home/talbot-raspberry/.local/lib/python3.9/site-packages (from py-solc-x) (2.10.0)
  • 首次报错:运行部署脚本python deploy.py执行编译逻辑时抛出异常,提示solc 0.6.0未安装:
Traceback (most recent call last):
File "/home/talbot-raspberry/demos/web3_py_simple_storage/deploy.py", line 8, in 
compiled_sol = compile_standard(
File "/home/talbot-raspberry/.local/lib/python3.9/site-packages/solcx/main.py", line 371, in compile_standard
solc_binary = get_executable(solc_version)
File "/home/talbot-raspberry/.local/lib/python3.9/site-packages/solcx/install.py", line 194, in get_executable
raise SolcNotInstalled(
solcx.exceptions.SolcNotInstalled: solc 0.6.0 has not been installed. Use solcx.install_solc('0.6.0') to install.
  • 二次尝试:查找适配树莓派ARM架构的solc 0.6.0安装资源,参考社区操作指引手动安装对应资源后,再次运行脚本仍然抛出完全相同的报错。

排查与解决步骤

出现重复报错的核心原因是手动安装的solc二进制没有被py-solc-x的路径扫描逻辑识别,按以下步骤操作即可修复:

  1. 确认py-solc-x的solc二进制存储目录
    运行如下Python命令获取默认扫描路径:
    from solcx import get_solc_install_folder
    print(get_solc_install_folder())
    
    树莓派环境下该路径默认是/home/你的用户名/.solcx/。
  2. 规范放置solc二进制并配置权限
    将手动下载/编译得到的solc 0.6.0二进制文件移动到上述目录,必须重命名为solc-v0.6.0(命名不符合规则会直接被扫描逻辑忽略),随后添加可执行权限:
    chmod +x ~/.solcx/solc-v0.6.0
    
  3. 校验二进制兼容性
    直接运行二进制文件验证是否能在当前系统正常执行:
    ~/.solcx/solc-v0.6.0 --version
    
    如果这一步提示执行格式错误、缺少依赖,说明下载的二进制和树莓派的系统版本、ARM架构版本不匹配,需要本地编译solc:
    • 先安装编译依赖:
      sudo apt update && sudo apt install -y build-essential libboost-all-dev cmake zlib1g-dev libjsoncpp-dev
      
    • 拉取solc 0.6.0版本源码完成编译,将编译生成的solc二进制按步骤2的要求放到指定目录、重命名、加权限即可。
  4. 代码中显式指定solc版本
    在deploy.py的编译逻辑前添加如下代码,避免自动版本匹配出现识别偏差:
    from solcx import set_solc_version
    # 强制指定使用0.6.0版本的solc
    set_solc_version('0.6.0')
    # 后续原有的compile_standard编译逻辑保持不变
    
  5. 验证识别状态
    运行如下代码确认py-solc-x已正确识别安装的solc版本:
    from solcx import get_installed_solc_versions
    print(get_installed_solc_versions())
    
    输出结果中包含0.6.0即代表配置正常,此时再运行python deploy.py即可正常执行合约编译。

内容的提问来源于stack exchange,提问作者T3Crypto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:01:03