web3.py 在 FreeBSD 上搭建开发环境的完整指南:从本地化配置到 geth 集成测试
Web3区块链【免费下载链接】web3.pyA python interface for interacting with the Ethereum blockchain and ecosystem.项目地址https://gitcode.com/gh_mirrors/we/web3.py点击查看免费下载本文是 web3.py 官方平台指南 docs/README-freebsd.md 的深度实践解读面向需要在 FreeBSD 上以源码方式搭建 web3.py 开发环境含运行测试套件的开发者。读完本文你将掌握 FreeBSD 上成功编译、安装并验证 web3.py 的全部关键步骤包括 UTF-8 本地化配置、C 扩展编译路径设置、tcsh 环境下的安装技巧以及为运行集成测试而手工编译 geth 的完整流程。一、为什么 FreeBSD 上需要专门的安装流程web3.py 的常规安装只需pip install web3见 docs/quickstart.rst但在 FreeBSD 上这条命令往往会失败。原因在于仓库依赖中存在多个需要本地编译的 C 扩展包。例如 setup.py 中声明的eth-hash[pycryptodome]、eth-account等依赖其底层需要 OpenSSL、libffi 等原生库FreeBSD 的 Python 默认编译参数include 路径、库路径与 Linux 发行版不同若不做针对性配置pip在编译原生模块时会直接报错若系统 locale 不是 UTF-8几乎每一个Python 3 模块的安装都会失败——这是官方文档明确指出的首要前置条件。因此这份官方指南给出的核心思路是先把系统层本地化、编译路径、原生库准备好再进入 Python 层虚拟环境、依赖安装、测试。下面按此顺序展开。版本说明该指南最初针对 FreeBSD 11.2 与 Python 3.6 编写文中py36-virtualenv、virtualenv-3.6等具体版本号需按你的实际系统调整。当前仓库已要求python_requires3.10, 4见 setup.py下文所有命令均以现仓库为前提版本号以你系统实际可用的为准。二、前置条件 1UTF-8 本地化.login_conf官方文档给出的第一项要求是在~/.login_conf中为 charset 和 lang 定义 UTF-8否则几乎所有的 Python 3 模块安装都会失败。FreeBSD 的登录环境由~/.login_conflogin.conf 的用户级覆盖控制。写入以下内容me:\ :charsetUTF-8:\ :langen_US.UTF-8:各行含义如下配置项取值作用charsetUTF-8定义默认字符集保证 Python 解释器与 C 扩展在编码处理上一致langen_US.UTF-8定义 locale影响LC_ALL/LC_CTYPE等环境变量进而影响setuptools、编译器等工具的文本处理配置完成后需要重新登录或重新加载 login class使其生效。可以用locale命令验证当前环境是否为 UTF-8。这一步的失败通常表现为pip install在安装任意依赖时抛出与 Unicode、解码相关的异常且无法通过单独安装某个包绕过。三、前置条件 2C 扩展编译路径~/.pydistutils.cfgweb3.py 及其依赖链中包含大量需要编译的 C/Cython 扩展如 secp256k1 绑定、hash 加速实现。FreeBSD 下这些头文件和库通常位于/usr/local前缀下而 Python 的默认distutils配置并不认识这个路径导致编译阶段找不到头文件/库文件而失败。解决方法是创建~/.pydistutils.cfg显式指定 include 与 library 搜索路径[build_ext] include_dirs/usr/local/include library_dirs/usr/local/lib[build_ext]段会作用于所有基于setuptools/distutils的 C 扩展编译过程include_dirs告诉编译器到哪里找头文件如openssl/、secp256k1.hlibrary_dirs告诉链接器到哪里找动态/静态库如libssl.so、libsecp256k1.so。若缺失该配置典型报错为fatal error: ...: No such file or directory或ld: cannot find -l...。同理Linux 平台的同类问题在 docs/README-linux.md 中通过安装libssl-dev、libffi-dev等系统包解决而 FreeBSD 的解决方式则是通过 pkg 安装包 修正编译路径双管齐下见下一节。四、安装系统依赖包官方指南给出的 pkg 安装命令如下sudo pkg install python3 py36-virtualenv git leveldb libxml2 libxslt pkgconf gmake secp256k1各包在安装流程中的角色包用途python3基础解释器py36-virtualenv提供virtualenv-3.6命令按当前仓库应替换为与你 Python 版本匹配的 virtualenv 包如py310-virtualenvgit克隆源码仓库leveldbLevelDB 数据库库文件Linux/OSX 指南中也有对应安装步骤见 docs/README-linux.md、docs/README-osx.mdlibxml2/libxsltXML 处理库供依赖链中相关扩展编译使用pkgconfpkg-config 实现供依赖构建时查询编译参数gmakeGNU make部分依赖的构建脚本需要secp256k1椭圆曲线签名库web3.py 交易签名与密钥相关功能的底层依赖需要绕过的一个已知问题alloca.h官方文档在安装命令后附了一条特殊注释# hack around https://github.com/ethereum/ethash/pull/107#issuecomment-445072692 sudo touch /usr/local/include/alloca.h这是针对历史版本依赖链中ethash相关代码在 FreeBSD 上找不到alloca.h的兼容性 hack——创建一个空头文件即可让编译通过。当前仓库的依赖树是否仍需要这一步取决于你所安装依赖的具体版本若后续编译报alloca.h缺失按上述方式补上即可不影响其他环节。五、创建并激活虚拟环境官方文档强调使用独立虚拟环境这与 docs/troubleshooting.rst 中最好用 virtualenv 保证环境干净的建议一致。FreeBSD 下的流程mkdir -p /tmp/venv_python virtualenv-3.6 /tmp/venv_python/python3 source /tmp/venv_python/python3/bin/activate.csh注意两个细节文档中source的是activate.csh说明作者使用的是tcsh/csh登录 shellFreeBSD 默认 shell。如果你使用 bash/zsh则应改用bin/activatebash/zsh或bin/activate.fishfishvirtualenv-3.6是 FreeBSD pkg 提供的带版本后缀命令名在当前仓库要求 Python 3.10setup.py的前提下应安装并使用对应版本的 virtualenv或直接使用python3 -m venv现代 FreeBSD 上更推荐后者。激活后建议先升级打包工具链pip install --upgrade pip setuptools六、安装 coincurve 与 web3.py含 tcsh 转义陷阱6.1 先装 coincurvepip install coincurvecoincurve是 secp256k1 的 Python 绑定提前单独安装可以让其编译错误如果存在与 web3.py 本体依赖的安装过程分离便于定位问题。这也是 FreeBSD 指南特有的步骤——Linux/OSX 指南中并无此步因为那两个平台通过系统包管理器apt/pacman/dnf/brew解决了libsecp256k1。6.2 克隆仓库cd /tmp git clone https://github.com/ethereum/web3.py.git cd web3.py官方 docs/contributing.rst 还建议使用git clone --recursive以拉取子模块对于纯安装场景普通 clone 即可。6.3 安装开发依赖# assuming youre using tcsh pip install -e .\[dev\]这里有两层要点第一层为什么是-e .[dev][dev]是 extra 依赖标记。查看 setup.py 可知dev本身包含build、bump_my_version、ipython、twine、wheel等发布/开发工具且extras_require[dev]会再叠加docstesttester三组依赖见 setup.py即一次安装即获得文档构建Sphinx、测试pytest 全家桶与 eth-tester 测试提供器所需的全部依赖-eeditable将仓库以可编辑模式安装修改源码无需重装即可生效适合开发与跑测试。第二层为什么要在[dev]前加反斜杠因为 tcsh 会把方括号当作文件名通配符处理.[dev]会被尝试做 glob 展开而报no match。同理OSX 指南在 docs/README-osx.md 中记录了 zsh 下的同类问题pip install -e .[dev] zsh: no matches found: .[dev]zsh 的解决方式是加引号pip install -e .[dev]因此在 bash 下直接写pip install -e .[dev]即可在 tcsh/zsh 下需转义或加引号。这是各平台指南中反复出现的真坑务必留意。七、安装后的快速验证完成安装后可用以下方式验证 web3.py 是否可用参考 docs/quickstart.rst 的用法 from web3 import Web3 w3 Web3() # 此处需按你的 Provider 配置 w3.is_connected()也可以直接验证 keccak 哈希功能实现位于 web3/main.py w3.keccak(textweb3.py on FreeBSD) HexBytes(0x...)Web3.keccak同时接受primitivebytes/int/None、text、hexstr三种输入形式底层由eth_utils.keccak提供其加速实现依赖的哈希后端正是安装阶段编译/安装的依赖包。若此处调用正常说明原生扩展层已工作正常。八、集成测试前置条件在 FreeBSD 上编译 gethweb3.py 的测试分为核心测试tests/core与集成测试tests/integration。集成测试需要真实节点官方指南给出了在 FreeBSD 上从源码编译 geth 的步骤pkg install go cd /tmp git clone https://github.com/ethereum/go-ethereum cd go-ethereum make geth cp build/bin/geth /usr/local/bin/要点说明先通过pkg install go安装 Go 工具链再从源码构建 geth将产物复制到PATH中集成测试套件通过geth_binaryfixture 定位可执行文件见 tests/integration/go_ethereum/conftest.py若环境变量GETH_BINARY已设置则直接使用否则回退到geth即上述复制到/usr/local/bin的二进制该 fixture 还会校验 geth 版本与 fixture 版本一致仓库当前使用geth-1.16.7-fixture.zip见 tests/integration/go_ethereum/conftest.py版本不匹配时会抛出AssertionError见 conftest.py因此建议编译与 fixture 相同的大版本1.16.x的 geth。8.1 如何运行集成测试在 tox.ini 中定义了集成测试环境例如[testenv] commands integration-goethereum-http: pytest {posargs:tests/integration/go_ethereum/test_goethereum_http.py -k not Async -n auto --maxprocesses15} integration-goethereum-ipc: pytest {posargs:tests/integration/go_ethereum/test_goethereum_ipc.py -k not Async -n auto --maxprocesses15} passenv GETH_BINARY GOROOT GOPATH即运行tox -e py310-integration-goethereum-http之类命令即可GETH_BINARY、GOROOT、GOPATH会被透传给测试进程。也可以直接手动运行pip install -e .[test] pytest tests/integration/go_ethereum/test_goethereum_http.py集成测试涉及 HTTP、IPC、WebSocket 三种连接方式对应 tests/integration/go_ethereum/ 下的test_goethereum_http.py、test_goethereum_ipc.py、test_goethereum_ws/目录覆盖同步与异步两种 API 风格。九、常见问题速查症状原因处理所有 Python 3 模块安装失败locale 非 UTF-8按第二节配置~/.login_conf并重新登录编译报找不到头文件/库include/library 路径缺失按第三节配置~/.pydistutils.cfgno matches found: .[dev]/No match.tcsh/zsh 对方括号做 glob改用pip install -e .[dev]或pip install -e .[dev]编译报alloca.h缺失依赖链兼容性问题sudo touch /usr/local/include/alloca.h集成测试报 geth 版本不匹配geth 版本与 fixture 不符使用与geth-1.16.7-fixture.zip相同大版本的 geth或设置GETH_BINARY环境变量指定路径十、总结FreeBSD 上搭建 web3.py 开发环境的核心经验可以概括为三句话先修好本地化与编译路径再装系统原生库最后才进入 Python 层。官方文档 docs/README-freebsd.md 给出的~/.login_conf、~/.pydistutils.cfg、pkg 依赖清单与 geth 编译步骤正是这条链路每一环的落地配置。同时仓库当前已要求 Python 3.10setup.py与 geth 1.16.x fixturetests/integration/go_ethereum/conftest.py实践时请以这两个版本约束为准替换指南中的历史版本号。完成以上步骤后你的 FreeBSD 机器即可正常进行 web3.py 的开发、文档构建与全量测试。赞分享Web3区块链【免费下载链接】web3.pyA python interface for interacting with the Ethereum blockchain and ecosystem.项目地址https://gitcode.com/gh_mirrors/we/web3.py点击查看免费下载相关推荐HivisionIDPhotos 实操指南3 步出第一张 AI 证件照4 种智能抠图模型这样选HivisionIDPhotos 实操指南3 步出第一张 AI 证件照4 种智能抠图模型这样选 证件照相馆一次 30 元起步改尺寸另加钱周末还得排队。这人工智能AI 应用计算机视觉图像处理后端别再从零搭后台nuxt-shadcn-dashboard 让你半小时拥有生产级 Nuxt 4 仪表盘别再从零搭后台nuxt shadcn dashboard 让你半小时拥有生产级 Nuxt 4 仪表盘 每次搭管理后台侧边栏、数据表格、主题切换都得从头写光KiCad符号库电子设计的核心资源宝库KiCad符号库电子设计的核心资源宝库 你是否曾为寻找合适的电子元件符号而烦恼是否希望有一个全面、规范且持续更新的符号库来加速你的电路设计KiCad符号库上一篇Figtree 开源项目教程下一篇Messenger 开源项目教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

docker service logs 命令完全指南:Swarm 服务与任务日志的批量获取与实时跟踪

docker service logs 命令完全指南:Swarm 服务与任务日志的批量获取与实时跟踪

容器运行时云原生 【免费下载链接】docker-ce :warning: This repository is deprecated and will be archived (Docker CE itself is NOT deprecated) see the https://github.com/docker/docker-ce/blob/master/README.md :warning: 项目地址: https://gitcode.co…

2026/10/12 1:18:42 阅读更多 →
AC108多mic矩阵驱动芯片:四通道同步采集与Linux驱动适配实战

AC108多mic矩阵驱动芯片:四通道同步采集与Linux驱动适配实战

简介:AC108多mic矩阵驱动芯片设计资料包,面向音频硬件工程师、嵌入式驱动开发者及语音算法从业者,聚焦多通道麦克风阵列的硬件设计与软件集成。包内共23个文件,约11.97MB,涵盖pdf规格文档、dsn与sch原理图、opj工程文件…

2026/10/12 1:18:42 阅读更多 →
决策可持续性标准:用五项准则评估架构决策记录(ADR)的长期质量

决策可持续性标准:用五项准则评估架构决策记录(ADR)的长期质量

【免费下载链接】architecture-decision-record Architecture decision record (ADR) examples for software planning, IT leadership, and template documentation 项目地址: https://gitcode.com/gh_mirrors/ar/architecture-decision-record 点击查看 免费下载 …

2026/10/12 1:18:42 阅读更多 →

最新新闻

ppt-master 的 IBM 品牌身份预设解析:从 Carbon Blue 设计规范到可执行的 design_spec

ppt-master 的 IBM 品牌身份预设解析:从 Carbon Blue 设计规范到可执行的 design_spec

AI 技能人工智能 【免费下载链接】ppt-master AI 把任意文档生成真正可编辑的 PowerPoint —— 原生形状与动画、演讲者备注可合成音频旁白、还能参考你自己的 .pptx 模板,而不是一张张图片 何雨果出品 项目地址: https://gitcode.com/hugohe3/ppt-master 点击查看…

2026/10/12 3:38:09 阅读更多 →
Windows 11 如何装回 Windows 10 任务栏与开始菜单:ExplorerPatcher 完整安装与调优指南

Windows 11 如何装回 Windows 10 任务栏与开始菜单:ExplorerPatcher 完整安装与调优指南

Windows 11 如何装回 Windows 10 任务栏与开始菜单:ExplorerPatcher 完整安装与调优指南 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher…

2026/10/12 3:38:09 阅读更多 →
泡泡战士国服v0.1.5.005客户端版本考古:从版本号到运行环境

泡泡战士国服v0.1.5.005客户端版本考古:从版本号到运行环境

看到“泡泡战士国服客户端v0.1.5.005_20110411”这个标题,很多老玩家应该会心一笑:这行名字里藏着一整个2011年春天的记忆。一个带日期的版本号,其实就是一款网游在某个时间点留下的完整化石,服务器列表、资源索引、版本策略、玩法…

2026/10/12 3:38:09 阅读更多 →
Cortex 数据迁移实战:使用 blocksconvert 将历史 chunks 数据转换为 TSDB blocks

Cortex 数据迁移实战:使用 blocksconvert 将历史 chunks 数据转换为 TSDB blocks

可观测性时序数据库后端指标监控 【免费下载链接】cortex A horizontally scalable, highly available, multi-tenant, long term Prometheus. 项目地址: https://gitcode.com/gh_mirrors/cortex6/cortex 点击查看 免费下载 本指南围绕 Cortex 的 blocksconvert 工…

2026/10/12 3:38:09 阅读更多 →
semantic-router 使用场景指南:为 Agent、云、数据中心、边缘与混合企业构建可编程模型决策层

semantic-router 使用场景指南:为 Agent、云、数据中心、边缘与混合企业构建可编程模型决策层

后端API网关模型推理服务AI Agent 【免费下载链接】semantic-router An open, programmable decision layer for models and compute. 项目地址: https://gitcode.com/gh_mirrors/sem/semantic-router 点击查看 免费下载 vLLM Semantic Router 的核心定位&#xff…

2026/10/12 3:38:09 阅读更多 →
信创落地四层技术栈:芯片、操作系统、数据库与中间件适配攻略

信创落地四层技术栈:芯片、操作系统、数据库与中间件适配攻略

1. 这个项目到底在解决什么问题先说结论:这不是一个“追赶潮流”的选题,而是很多做国产化替代的团队,在立项时才发现自己绕不开的技术底座问题。过去十年,大部分应用系统跑在西方主导的软硬件栈上。芯片用国外架构,操作…

2026/10/12 3:37:09 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →