【问题标题】:Brownie not working: Cython undefined symbol _PyGen_Send布朗尼不工作:Cython 未定义符号 _PyGen_Send
【发布时间】:2022-01-23 22:00:38
【问题描述】:

我在 Fedora 35 上设置了我的开发环境,当我运行任何诸如 $ brownie console 甚至 brownie --version 之类的 brownie 命令时,我收到以下错误:

Traceback (most recent call last):
  File "/home/philippbunke/.local/bin/brownie", line 5, in <module>
    from brownie._cli.__main__ import main
  File "/home/philippbunke/.local/pipx/venvs/eth-brownie/lib64/python3.10/site-packages/brownie/__init__.py", line 6, in <module>
    from brownie.project import compile_source, run
  File "/home/philippbunke/.local/pipx/venvs/eth-brownie/lib64/python3.10/site-packages/brownie/project/__init__.py", line 3, in <module>
    from .main import (  # NOQA 401
  File "/home/philippbunke/.local/pipx/venvs/eth-brownie/lib64/python3.10/site-packages/brownie/project/main.py", line 44, in <module>
    from brownie.network import web3
  File "/home/philippbunke/.local/pipx/venvs/eth-brownie/lib64/python3.10/site-packages/brownie/network/__init__.py", line 4, in <module>
    from .account import Accounts
  File "/home/philippbunke/.local/pipx/venvs/eth-brownie/lib64/python3.10/site-packages/brownie/network/account.py", line 12, in <module>
    import eth_account
  File "/home/philippbunke/.local/pipx/venvs/eth-brownie/lib64/python3.10/site-packages/eth_account/__init__.py", line 1, in <module>
    from eth_account.account import (  # noqa: F401
  File "/home/philippbunke/.local/pipx/venvs/eth-brownie/lib64/python3.10/site-packages/eth_account/account.py", line 8, in <module>
    from cytoolz import (
  File "/home/philippbunke/.local/pipx/venvs/eth-brownie/lib64/python3.10/site-packages/cytoolz/__init__.py", line 3, in <module>
    from .functoolz import *
ImportError: /home/philippbunke/.local/pipx/venvs/eth-brownie/lib64/python3.10/site-packages/cytoolz/functoolz.cpython-310-x86_64-linux-gnu.so: undefined symbol: _PyGen_Send

设置:
Python=3.10.1
Cython=0.29.26
gcc/gcc-c=11.2.1-7.fc35.x86_64
Ganache CLI=v6.12.2

$ pipx list

venvs are in /home/philippbunke/.local/pipx/venvs
apps are exposed on your $PATH at /home/philippbunke/.local/bin
   package eth-brownie 1.16.4, Python 3.10.1
    - brownie

$ $PATH

/home/philippbunke/.local/bin:/home/philippbunke/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/var/lib/snapd/snap/bin

我花了一整天的时间来修复这个错误,请帮助我!

【问题讨论】:

  • 您需要使用最新版本的 Cython 重新编译 functoolz(或下载已完成此操作的 functoolz 版本)。这是早期版本的 Cython 和 Python 3.10 之间的不兼容。
  • github.com/pytoolz/cytoolz/issues/151(我认为是同一个问题)
  • @DavidW 我使用pip install functoolz 安装了最新版本的functoolz,但我仍然遇到同样的错误。我不知道如何自己重新编译包,您还有其他建议吗?我自己找到了这篇文章(虽然应该在问题中链接它),但据我了解,这个问题只能通过降级 python 来解决。
  • 粗略(未经测试)大纲:使用 pip 卸载 functoolz(只是为了确定);下载最新的源代码版本 (github.com/pytoolz/cytoolz/tags);运行 setup.pypython setup.py --with-cython install
  • 我刚刚这样做了,它似乎已经正确安装,如下所示,但是,我仍然得到同样的错误:(Installed /usr/local/lib64/python3.10/site-packages/toolz-0.11.2-py3.10.eggFinished processing dependencies for cytoolz==0.11.2

标签: python cython fedora brownie


【解决方案1】:

这里的问题似乎是 Python 3.10.1!

我使用 anaconda 使用 Python 3.8.12 创建了一个新的虚拟环境,使用 pipx install --python python3.8 eth-brownie 安装了 brownie,它成功了!

这里的技巧是,还要告诉 pipx 使用另一个 python 版本,否则它会创建对全局 python 版本的依赖,在我的例子中是 python 3.10。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 2021-12-23
    • 1970-01-01
    • 2022-08-09
    • 2014-06-16
    • 1970-01-01
    • 2021-09-21
    • 2022-01-03
    相关资源
    最近更新 更多