我正在我的linux iptable中处理数据包,所以我需要在python中处理它们。为了将我的iptable中的数据包导入python,我决定使用**netfilterqueue**。但是,当我想使用它时,我遇到了错误。错误是:模块未找到错误:没有名为"netfilterqueue"的模块
但是,已安装此模块。
我在它的网页上跟进了每个过程,我有GCC C编译器,我安装了"apt-get install build-essential python-dev libnetfilter-queue-dev",和"pip install netfilterqueue"。
当我第二次运行"pip安装NetfilterQueue"时,它说:
$ pip install NetfilterQueue
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: NetfilterQueue in /home/salmon/.local/lib/python3.10/site-packages (1.0.0)
当我转到目录时,我看到我有"netfilterqueue"和"NetfilterQueue-1.0.0.dist-info"目录,所以我设法下载了它们。
我也在pycharm中下载它没有任何问题。但是,当我想把它导入到我的代码中时,它给出了上面的错误。
我试着重新启动我的主计算机和virtualbox,但什么都没有改变。
我使用Python 3.10.9、pip 23.0和vmware16作为虚拟机,Kali Linux 2022.4
- 重要补充:**当我使用终端打开python时,我可以成功导入它。我可以使用"dir()"函数查看它的内部,并使用"help()"函数了解函数。但是,当我尝试运行我的代码时,我遇到了提到的错误,即导入模块错误。
>>> import netfilterqueue
>>> dir(netfilterqueue)
['COPY_META', 'COPY_NONE', 'COPY_PACKET', 'NetfilterQueue', 'PROTOCOLS',
'Packet', 'VERSION', '__builtins__', '__cached__', '__doc__',
'__file__', '__loader__', '__name__', '__package__', '__path__',
'__spec__', '__version__', '_impl', '_version']
>>>print(netfilterqueue)
<module 'netfilterqueue' from '/home/salmon/.local/lib/python3.10/site-
packages/netfilterqueue/__init__.py'>
正如您所看到的,该模块在终端中使用,但当我尝试使用"sudo python 'filename'"运行代码时,它会给出" ModuleNotFoundError:没有名为"netfilterqueue"的模块"
1条答案
按热度按时间vngu2lb81#
这是您原始帖子中缺失的执行部分:
但是当我尝试使用“sudopython 'filename'"运行代码时
这是因为你的用户python env和root用户的不同。
root != salmon
解决这个问题的一种方法是以root身份在系统全局运行
pip install ...
。