将Go以太坊作为子流程运行

py-geth的Python项目详细描述


Pygeth

Build StatusDocumentation StatusPyPi versionPyPi downloads

作为子进程运行geth的python包装器

系统依赖性

此库要求存在geth可执行文件。

安装

安装

pip install py-geth

快速启动

运行连接到主网的geth

>>>fromgethimportLiveGethProcess>>>geth=LiveGethProcess()>>>geth.start()

或者是一家私人的本地连锁店。这些要求你给他们一个 名字。

>>>fromgethimportDevGethProcess>>>geth=DevGethProcess('testing')>>>geth.start()

默认情况下,DevGethProcess在默认情况下设置测试链 datadirgeth使用。如果你想改变位置 对于这些测试链,可以指定替代的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都在rpcipc接口上启用。
  • 帐户0已解锁
  • 网络配置为不查找或连接任何对等方。
  • 使用1234networkid
  • 详细设置为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=minormake release bump=devnum

如果您是beta版本,make release bump=stage将切换到 马厩。

若要在当前版本稳定时发布不稳定版本,请指定 新版本显式地 make release bump="--new-version4.0.0-alpha.1 devnum"

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java返回入for循环或外循环   Android是由java引起的。安全cert.CertPathValidatorException:找不到证书路径的信任锚点   PHP和Java之间有什么区别?   java我想将gridview更改为recyclerview   java获取分页的行数   试图在Java类中计算CKJM时发生类错误   java如何在BIRT报告中集成谷歌地图   java我可以在enum上使用Spring的@Component吗?   在Android Java的硬件键盘上设置CAPS_LOCK和NUM_LOCK   XSD 1.1断言中基于java XSD attributevalue的regexvalidation   java从命令行设置spring属性文件位置   Ogg格式的java语音录制?   java我能找到Groovy代码块中可能抛出的所有(已检查的)异常吗?   java为什么这会导致ClassCastException?   java在安卓 studio中的活动之间传递数据   java Intellij:如何从现有进程更新运行配置环境?   java我们如何创建Dagger 2的依赖关系图?   java如何从JSP页面到servlet获取数据   Java https连接证书不受信任+javax。网ssl。SSLException:PKIX路径生成失败