【问题标题】:able to import module but not things from it [closed]能够导入模块但不能从中导入东西[关闭]
【发布时间】:2021-12-04 22:52:44
【问题描述】:

我在 mac(第一次)并使用 pycharm 和可视化代码。

在pycharm上,我使用的是venv,已经安装了scapy,可以看到它安装在解释器包管理器中,“import scapy”下没有红线。当我尝试从该包“从 scapy 导入 UDP”中导入任何内容或使用 scapy“scapy.UDP”中的任何内容时,就会出现问题。 ----如下所示的各个错误。

ImportError: cannot import name 'UDP' from 'scapy' (/Users/{KEVIN}/PycharmProjects/UDP/venv/lib/python3.9/site-packages/scapy/__init__.py)

AttributeError: module 'scapy' has no attribute 'UDP'

另一方面,我尝试使用可视代码和系统 python,代码运行没有问题,但我无法右键单击 UDP() 并跳转到它说未找到定义的类定义?我觉得这一定是与 mac 相关的问题,但我似乎无法弄清楚。

【问题讨论】:

    标签: python macos visual-studio-code pycharm python-packaging


    【解决方案1】:

    UDP不是scapy直接下的,需要做的

    from scapy.layers.inet import UDP
    

    然后您可以右键单击 UDP() 并跳转到类定义。

    以下两次导入也对我有用:

    venv$ python
    Python 3.8.10 (default, Sep 28 2021, 16:10:42) 
    [GCC 9.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from scapy.ansmachine import AnsweringMachine
    >>> from scapy.all import UDP
    >>>
    

    请仔细检查你的 scapy 安装。

    【讨论】:

    • 谢谢@Philippe!我花了很多时间做一些如此微不足道的事情。这解决了两个 IDE 中的所有问题。但是你能解释一下为什么“from scapy.all import UDP”不起作用吗?
    • 这个答案只工作过一次,再次运行它会产生错误:ImportError: cannot import name 'AnsweringMachine' from partial initialized module 'scapy.ansmachine'(很可能是由于循环导入)
    【解决方案2】:

    尝试: from scapy.all import * 来自https://scapy.readthedocs.io/en/latest/functions.html

    这行得通吗?

    【讨论】:

    • 所以会在pycharm venv中运行,但是还是看不到函数UDP()。通常我可以点击 UDP() 来查看构造函数,但是我看到“在'imported module scapy | import module scapy | init.py'中找不到引用'UDP'”
    • 如果我执行“从 scapy.all 导入 UDP”,它仍然运行,但它在 UDP 下显示红线,当悬停在上方时显示,“在 'all.py' 中找不到参考 'UDP'”
    猜你喜欢
    • 2021-10-06
    • 1970-01-01
    • 2021-12-23
    • 2018-08-25
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    相关资源
    最近更新 更多