将Go以太坊作为子流程运行
py-geth的Python项目详细描述
Pygeth
作为子进程运行geth的python包装器
系统依赖性
此库要求存在geth可执行文件。
安装
安装
pip install py-geth
快速启动
运行连接到主网的geth
>>>fromgethimportLiveGethProcess>>>geth=LiveGethProcess()>>>geth.start()
或者是一家私人的本地连锁店。这些要求你给他们一个 名字。
>>>fromgethimportDevGethProcess>>>geth=DevGethProcess('testing')>>>geth.start()
默认情况下,DevGethProcess在默认情况下设置测试链 datadir由geth使用。如果你想改变位置 对于这些测试链,可以指定替代的base_dir。
>>>geth=DevGethProcess('testing','/tmp/some-other-base-dir/')>>>geth.start()
每个实例都有一些方便的属性。
>>>geth.data_dir"~/.ethereum">>>geth.rpc_port8545>>>geth.ipc_path"~/.ethereum/geth.ipc">>>geth.accounts['0xd3cda913deb6f67967b99d67acdfa1712c293601']>>>geth.is_aliveFalse>>>geth.is_runningFalse>>>geth.is_stoppedFalse>>>geth.start()>>>geth.is_aliveTrue# indicates that the subprocess hasn't exited>>>geth.is_runningTrue# indicates that `start()` has been called (but `stop()` hasn't)>>>geth.is_stoppedFalse>>>geth.stop()>>>geth.is_aliveFalse>>>geth.is_runningFalse>>>geth.is_stoppedTrue
在测试时,很高兴看到 geth进程。{TT8}$提供了一个可用于 将stdout和stderr输出记录到日志文件中。
>>>fromgethimportLoggingMixin,DevGethProcess>>>classMyGeth(LoggingMixin,DevGethProcess):...pass>>>geth=MyGeth()>>>geth.start()
所有日志将在当前的./logs/中写入日志文件 目录。
基础的geth进程可能需要额外的时间来打开rpc 或者IPC连接,如果需要生成 达格。您可以使用以下接口来查询 准备好了。
>>>geth.is_rpc_readyTrue>>>geth.wait_for_rpc(timeout=30)# wait up to 30 seconds for the RPC connection to open>>>geth.is_ipc_readyTrue>>>geth.wait_for_ipc(timeout=30)# wait up to 30 seconds for the IPC socket to open>>>geth.is_dag_generatedTrue>>>geth.is_miningTrue>>>geth.wait_for_dag(timeout=600)# wait up to 10 minutes for the DAG to generate.TheDAGfunctionalitycurrentlyonlyappliestotheDAGforepoch0.
安装特定版本的geth
This feature is experimental and subject to breaking changes.
以下任何版本的geth都可以使用 py-geth在列出的平台上。
- v1.5.6(Linux/OSX)
- v1.5.7(Linux/OSX)
- v1.5.8(Linux/OSX)
- v1.5.9(Linux/OSX)
- v1.6.0(Linux/OSX)
- v1.6.1(Linux/OSX)
- v1.6.2(Linux/OSX)
- v1.6.3(Linux/OSX)
- v1.6.4(Linux/OSX)
- v1.6.5(Linux/OSX)
- v1.6.6(Linux/OSX)
- v1.6.7(Linux/OSX)
- v1.7.0(Linux/OSX)
- v1.7.2(Linux/OSX)
- v1.8.1(Linux/OSX)
可以通过命令行进行安装:
$ python -m geth.install v0.4.12
或者使用install_geth函数从python获取。
>>>fromgethimportinstall_geth>>>install_geth('v1.7.0')
安装的二进制文件可以在$HOME/.py-geth目录中找到, 在你的主目录下。v1.7.0二进制文件位于 $HOME/.py-geth/geth-v1.7.0/bin/geth。
关于DevGethProcess
DevGethProcess是为了方便测试而设计的。在那里面 考虑到这一点,它的预配置如下。
- 创建并分配一个账户10亿以太。
- 所有api都在rpc和ipc接口上启用。
- 帐户0已解锁
- 网络配置为不查找或连接任何对等方。
- 使用1234的networkid。
- 详细设置为5(调试)
- 使用单个线程启用挖掘。
- rpc接口尝试将绑定到8545,但将找到一个打开的端口 如果这个端口不可用。
- devp2p接口尝试将绑定到30303,但会发现 端口(如果此端口不可用)。
有问题
如果运行时启用了mining(这是 DevGethProcess然后可能需要生成DAG 手动操作。如果你没有,那么它会在你第一次 运行进程,这需要一段时间。
手动生成:
$ geth makedag 0 ~/.ethash
这在像travis ci这样的ci环境中尤其重要 在生成过程中,进程可能会超时。
发展
克隆存储库,然后运行:
pip install -e . -r requirements-dev.txt
运行测试
您可以使用以下命令运行测试:
py.test tests
或者您可以安装tox来运行完整的测试套件。
释放
要将降价自述转换为正确的 在pypi上正确呈现的格式。
对于类似Debian的系统:
apt install pandoc
或在OSX上:
brew install pandoc
发布新版本:
make release bump=$$VERSION_PART_TO_BUMP$$
如何颠簸
此repo的版本格式为 稳定,{major}.{minor}.{patch}-{stage}.{devnum}表示不稳定 (stage可以是alpha或beta)。
若要在行中发布下一个版本,请指定要凹凸的部分,如 make release bump=minor或make release bump=devnum。
如果您是beta版本,make release bump=stage将切换到 马厩。
若要在当前版本稳定时发布不稳定版本,请指定 新版本显式地 make release bump="--new-version4.0.0-alpha.1 devnum"