我试着运行我的程序,我试过导入scapy
然后导入scapy.all
,但是is会给我同样的错误。如果这有帮助的话,我正在使用kali-linux。导致错误的代码仅来自scapy.all import *
。
这是完整的错误输出:
Traceback (most recent call last):
File "/home/bradz/test.py", line 24, in <module>
from scapy.all import send, IP, TCP, ARP
File "/usr/local/lib/python3.9/dist-packages/scapy/all.py", line 16, in <module>
from scapy.arch import *
File "/usr/local/lib/python3.9/dist-packages/scapy/arch/__init__.py", line 27, in <module>
from scapy.arch.bpf.core import get_if_raw_addr<br/>
File "/usr/local/lib/python3.9/dist-packages/scapy/arch/bpf/core.py", line 30, in <module>
LIBC = cdll.LoadLibrary(find_library("libc"))
File "/usr/lib/python3.9/ctypes/util.py", line 341, in find_library
_get_soname(_findLib_gcc(name)) or _get_soname(_findLib_ld(name))
File "/usr/lib/python3.9/ctypes/util.py", line 147, in _findLib_gcc
if not _is_elf(file):
File "/usr/lib/python3.9/ctypes/util.py", line 99, in _is_elf
with open(filename, 'br') as thefile:
FileNotFoundError: [Errno 2] No such file or directory: b'liblibc.a'
修好了。你得去:
/usr/lib/python3/dist-packages/scapy/arch/bpf/core.py
并编辑行
LIBC = cdll.LoadLibrary(find_library("libc"))
至
LIBC = cdll.LoadLibrary(find_library("c"))
发布于 2020-12-22 15:10:32
这似乎是11天前修正了库中的一个bug。
Python3.9中有一个关于
find_library()
函数的回归:导入ctypes.util >>> ctypes.util.find_library("libc")跟踪(最近一次调用):File“,第1行,文件”/usr/lib/python3.9/ctype/util.py“,第341行,find_library _get_soname(_findLib_gcc(名称))或_get_soname(_findLib_ld(名称)) File”/usr/lib/python3.9/ctype/util.py“,第147行,在_findLib_gcc ( _is_elf ):File“/usr/lib/python3.9/ctype/util.py”中,第99行以_is_elf中的open(文件名,'br')作为文件: FileNotFoundError: Errno 2--没有这样的文件或目录:B‘liblebc.a’ 解决办法是使用find_library("c")
代替。它也适用于较早版本的Python,这已经在contrib/isotp.py
中使用了。
更新替罪羊,因为您似乎在使用与您的CPython版本不兼容的替罪羊版本。
实际上,看起来PyPI还没有更新,所以您将无法通过pip
进行更新。您可能需要回滚您的Python版本,直到它被更新或手动安装Github的修补的替身版本。。
https://stackoverflow.com/questions/65410697
复制相似问题