ImportError: No module named scapy.all
ImportError: No module named scapy.all
我是 运行 macOS Sierra 和 Python 2.7.
在我的终端中,我安装了 scapy:
pip install scapy
Requirement already satisfied: scapy in /usr/local/lib/python2.7/site-packages
但是运行这个:
from scapy.all import *
for pkt in sniff(iface='en0'):
print pkt
给我这个:
python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
from scapy.all import *
ImportError: No module named scapy.all
我已经尝试 Google,并安装了 pcapy
和其他软件包 - 但没有成功。
ImportError: No module..
发现当 Python 找不到您的模块时会发生错误。那么,它在哪里寻找模块?
import os
print os.sys.path
验证 /usr/local/lib/python2.7/site-packages
在该列表中。如果没有,追加
os.sys.path.append('/usr/local/lib/python2.7/site-packages')
并尝试加载它。如果仍然不行,请尝试重新安装模块,因为那里似乎有问题。
如果您使用的是 termux,也许您应该试试这个:
pip2 install scapy.
确定 Python 从
导入库的位置
$ python
Python 2.7.15+ (default, Aug 31 2018, 11:56:52)
[GCC 8.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/wx-3.0-gtk3']
>>>
$
- 确定 scapy 在你盒子上的位置
$ which scapy
/usr/bin/scapy
$
- 您将不会再遇到导入错误
$ python
Python 2.7.15+ (default, Aug 31 2018, 11:56:52)
[GCC 8.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.sys.path.append('/usr/bin/')
>>> from scapy.all import *
如果您使用 ubuntu 类型:'sudo apt-get install python3-scapy' for python version >= 3.
这里的大部分答案都在帮助您 在系统级安装 scapy 和 运行 使用 sudo 访问 。使用 sys.path
他们试图将路径添加到已安装的 scapy 位置,基本上,pip install packages in lib/python<any-version>/site-packages/
因为 python 你正在使用 运行 程序的解释器包含使用 scapy python 包 site-packages
中没有 scapy 这就是解释器提高 ImportError: No module named scapy.all
!
的原因
我建议使用虚拟环境管理器创建一个单独的虚拟环境,您可以选择 python 版本,可以是 2.7 或 3.8 或其他版本,然后安装并使用 scapy python 包您的虚拟环境中的项目。这将使你的系统保持干净,问题也很容易调试,你可以稍后删除这个虚拟环境,并且项目依赖项不会留下任何痕迹。
使用非常简单:
假设你已经virtualenv
(像conda这样的外部包)安装了,如果没有你可以安装
- 如果在 python(版本 2.x)上:
pip install virtualenv
- 如果在 python(版本 3.x)上:
python3 -m pip install virtualenv
然后,
创建一个虚拟环境,你可以命名任何东西!
virtualenv --python=3.8 packet_sniffer_env38
激活虚拟环境
source packet_sniffer_env38/bin/activate
根据你的情况简单地安装你的依赖项scapy
pip install scapy
现在你可以 运行 使用 scapy 的程序,注意你仍然需要使用 sudo 访问,但这次你将使用虚拟环境的 python 解释器而不是你的系统.
另外,你可以查看这个虚拟环境的库,./packet_sniffer_env38/lib/python3.8/site-packages
你会在这里找到scapy
!
sudo ./packet_sniffer_env38/bin/python <your_program_using_scapy>.py
you can have a look at the working use of scapy python package with virtualenv!
如果你安装了scapy,你可以使用如下代码。您不需要将其包装在 try 块中(显然),但这对我今天有用。
try:
from scapy.all import rdpcap, IP, Ether, PacketList
except ImportError:
raise ImportError('scapy is not installed, please install it by running: '
'pip install scapy') from None
现在你想做点什么吗?
plist = rdc.ap(sys.argv[1])
for data in plist:
if isinstance(data, Ether):
print("Found an ether object, might be what I want")
我是 运行 macOS Sierra 和 Python 2.7.
在我的终端中,我安装了 scapy:
pip install scapy
Requirement already satisfied: scapy in /usr/local/lib/python2.7/site-packages
但是运行这个:
from scapy.all import *
for pkt in sniff(iface='en0'):
print pkt
给我这个:
python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
from scapy.all import *
ImportError: No module named scapy.all
我已经尝试 Google,并安装了 pcapy
和其他软件包 - 但没有成功。
ImportError: No module..
发现当 Python 找不到您的模块时会发生错误。那么,它在哪里寻找模块?
import os
print os.sys.path
验证 /usr/local/lib/python2.7/site-packages
在该列表中。如果没有,追加
os.sys.path.append('/usr/local/lib/python2.7/site-packages')
并尝试加载它。如果仍然不行,请尝试重新安装模块,因为那里似乎有问题。
如果您使用的是 termux,也许您应该试试这个:
pip2 install scapy.
确定 Python 从
导入库的位置$ python Python 2.7.15+ (default, Aug 31 2018, 11:56:52) [GCC 8.2.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> print os.sys.path ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/wx-3.0-gtk3'] >>> $
- 确定 scapy 在你盒子上的位置
$ which scapy /usr/bin/scapy $
- 您将不会再遇到导入错误
$ python Python 2.7.15+ (default, Aug 31 2018, 11:56:52) [GCC 8.2.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> os.sys.path.append('/usr/bin/') >>> from scapy.all import *
如果您使用 ubuntu 类型:'sudo apt-get install python3-scapy' for python version >= 3.
这里的大部分答案都在帮助您 在系统级安装 scapy 和 运行 使用 sudo 访问 。使用 sys.path
他们试图将路径添加到已安装的 scapy 位置,基本上,pip install packages in lib/python<any-version>/site-packages/
因为 python 你正在使用 运行 程序的解释器包含使用 scapy python 包 site-packages
中没有 scapy 这就是解释器提高 ImportError: No module named scapy.all
!
我建议使用虚拟环境管理器创建一个单独的虚拟环境,您可以选择 python 版本,可以是 2.7 或 3.8 或其他版本,然后安装并使用 scapy python 包您的虚拟环境中的项目。这将使你的系统保持干净,问题也很容易调试,你可以稍后删除这个虚拟环境,并且项目依赖项不会留下任何痕迹。
使用非常简单:
假设你已经virtualenv
(像conda这样的外部包)安装了,如果没有你可以安装
- 如果在 python(版本 2.x)上:
pip install virtualenv
- 如果在 python(版本 3.x)上:
python3 -m pip install virtualenv
然后,
创建一个虚拟环境,你可以命名任何东西!
virtualenv --python=3.8 packet_sniffer_env38
激活虚拟环境
source packet_sniffer_env38/bin/activate
根据你的情况简单地安装你的依赖项scapy
pip install scapy
现在你可以 运行 使用 scapy 的程序,注意你仍然需要使用 sudo 访问,但这次你将使用虚拟环境的 python 解释器而不是你的系统.
另外,你可以查看这个虚拟环境的库,./packet_sniffer_env38/lib/python3.8/site-packages
你会在这里找到scapy
!
sudo ./packet_sniffer_env38/bin/python <your_program_using_scapy>.py
you can have a look at the working use of scapy python package with virtualenv!
如果你安装了scapy,你可以使用如下代码。您不需要将其包装在 try 块中(显然),但这对我今天有用。
try:
from scapy.all import rdpcap, IP, Ether, PacketList
except ImportError:
raise ImportError('scapy is not installed, please install it by running: '
'pip install scapy') from None
现在你想做点什么吗?
plist = rdc.ap(sys.argv[1])
for data in plist:
if isinstance(data, Ether):
print("Found an ether object, might be what I want")