关于将模块导入python的问题

s3fp2yjn  于 2023-02-02  发布在  Python
关注(0)|答案(1)|浏览(190)

我正在我的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.9pip 23.0vmware16作为虚拟机,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"的模块"

vngu2lb8

vngu2lb81#

是您原始帖子中缺失的执行部分:

但是当我尝试使用“sudopython 'filename'"运行代码时
这是因为你的用户python env和root用户的不同。
root != salmon
解决这个问题的一种方法是以root身份在系统全局运行pip install ...

相关问题