【问题标题】:Import error:No module named导入错误:没有命名模块
【发布时间】:2017-04-07 14:43:55
【问题描述】:

我安装了一个用 Python 编码的加密框架 Charm。然后,我通过导入一些工具在我的代码中使用它,如下所示:

from charm.toolbox.pairinggroup import PairingGroup,ZR,G1,G2,GT,pair
from charm.zkp_compiler.zkp_generator import *

但是,我收到了一个错误

ImportError: No module named engine.protocol

engine.protocolzkp_generator 使用。我没有收到任何与charm.toolbox.pairringgroup 相关的Import Error。这是什么原因造成的?我认为我没有与路径相关的问题,因为charm.toolbox.pairringgroup 没有同样的问题。

【问题讨论】:

  • 那么,如果没有它,你为什么要首先导入它呢?

标签: python import python-import importerror


【解决方案1】:

根据official package structure,他们在v0.42b 中引入了一些不向后兼容的更改。我认为删除 charm.core.engine.protocol 就是其中之一。

如果您的应用程序在没有import 的情况下也能正常工作,您为什么要使用它?

【讨论】:

  • 我编辑了我的问题。实际上zkp_generator 使用engine.protocol 而我需要使用zkp_generator
【解决方案2】:

似乎没有名为 charm.core.engine.protocol 的模块。尝试并解决此问题的一种方法是在命令提示符调用中。

import charm.core.engine
dir (charm.core.engine) # Might not actually tell you anything useful
help (charm.core.engine) # If the documentation is good, might tell you what modules you can import

这可能会有所帮助,但从上面的错误中,charm.core.engine.protocol 似乎不存在...

【讨论】:

  • 当我执行这段代码时,我看到charm.core.engine 存储在Python 的包中。它提供了文件的路径和一些其他信息。
  • 鉴于您的新错误消息,我认为我的其他答案会对您有所帮助。以上只是为了让您了解其中的内容。如果在目录中您可以看到协议,那么我的其他答案很可能是正确的。
【解决方案3】:

从编辑到您的问题,它似乎需要一个对象 engine.protocol,因此这意味着您的代码可以很好地与

from charm.core import *

这很可能会导致一个名为 engine 的对象,该对象具有一个属性协议(可以称为 engine.protocol)。

【讨论】:

    猜你喜欢
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2014-06-18
    • 2020-10-26
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    相关资源
    最近更新 更多