如何修复 Python ModuleNotFoundError

问题描述

我已经通过多种方式安装了 netfilterqueue,从 GitHub 克隆并通过 pip 安装。在 python 3.7、3.8、3.9 上。 Netfilterqueue 只安装在 3.6 和 3.7 上,尽管它需要一些时间。在安装和测试 netfilterqueue 是否在交互模式下工作之后,我尝试运行我之前工作过的程序没有。它给了我一个 modulenotfound 错误

ModuleNotFoundError: 没有名为“netfilterqueue”的模块

我不知道我做错了什么 pip 告诉我它安装正确,但它在程序中不起作用。

编辑 所以我没有使用 pycharm 或 anaconda 我主要在 VS Code 中编写代码。但我什至还没有走到那一步。我只是在终端中运行我的脚本,它无法从脚本中找到模块。我已经安装了所有这些依赖项,当我运行该命令时,我得到

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note,selecting 'python-dev-is-python2' instead of 'python-dev'
build-essential is already the newest version (12.8).
libnetfilter-queue-dev is already the newest version (1.0.3-1).
python-dev-is-python2 is already the newest version (2.7.18-8).
The following packages were automatically installed and are no longer required:
  libpython3-dev libpython3.9-dev python3.9-dev
Use 'sudo apt autoremove' to remove them.
0 upgraded,0 newly installed,0 to remove and 9 not upgraded.

现在,python 3.6 的 pip3 install netfilterqueue 突然也不起作用了。我的系统上安装了 python 3.9 和 2.7,我使用 pyenv 来管理我的 python 3.6 版本,以尝试运行需要 netfilterqueue 的脚本。

更新: 所以我重新启动了我的计算机并从一个新的 Kali live 开始,它与 Kali live 附带的 python 3.8.4 一起工作。我不确定我做了什么来破坏我的安装。我刚刚安装了它并安装了 KDE 和 latte Dock 并进行了更新,我认为这可能是由于我添加一个测试存储库,但我不确定这是否是问题所在?

解决方法

根据这个问题 How do I install netfilterqueue for python3? 看起来 netfilterqueue 在 python 3.7 上不能很好地工作,但在 3.6 上工作得很好,所以将整个环境调整为 3.6 版,但是通过项目解释器在 anaconda 或 pycharm 中

  1. 您还需要根据文档 https://pypi.org/project/NetfilterQueue/ 和上一个问题中的第二个答案进行安装

    sudo apt-get install build-essential python-dev libnetfilter-queue-dev
    
  2. 此外,如果您正在使用 anaconda jupyter 笔记本或蜘蛛,则解释器很可能找不到安装包的位置 解决此问题的最简单方法是使用 --user 标志重新安装。默认情况下,Anaconda 将拉入您的用户包。 试试pip3 install netfilterqueue --user,然后看看能不能导入

       pip3 uninstall netfilterqueue
       pip3 install netfilterqueue --user
    

这样做后请重启你的anaconda
有时问题出在设置工具上,您可以尝试重新安装它们

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...