今天用Python小试牛刀了一下scapy,结果运行的时候出现了如下错误:
Traceback (most recent call last):
File "F:/python/scapy.py", line 2, in <module>
from scapy.all import *
File "F:\python\scapy.py", line 2, in <module>
from scapy.all import *
ModuleNotFoundError: No module named 'scapy.all'; 'scapy' is not a package
中文翻译
ModuleNotFoundError:没有名为“ scapy.all”的模块; 'scapy'不是包
原因:
1、没有安装scapy;
2、你的目录下还有一个scapy.py的文件;
解决方法
知道了原因,解决起来就容易多了,现在就来说说我是如何解决这个问题的?
我的电脑是Windows10 + Python3.7版本。
第一步:查看自己是否安装了scapy?
没有安装scapy,可以直接用”pip install scapy“来安装。
通过上图,可以清楚的知道我已经安装了scapy,路径位置在“f:\python3.7.0\lib\site-packages”;
第二步:查看我的当前目录是否有scapy.py这个文件?
豪无疑问,我当前目录有scapy.py这个文件,我只需要把 scapy.py 重命名为 scapy-sniff.py 即可恢复正常,再也不会报上面那种错误了。
关于当前目录有了scapy.py为什么会报错?大家可以了解一下Python找包或模块的搜索路径顺序:
搜索路径
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
从上面这个原理,相信你已经知道了,如果你的当前目录有 scapy.py ,你再用 “from scapy.all import * ”,相当于找的是当前目录这个scapy.py 文件了。
2022年06月24日 10:09:03 沙发
但是我在F:\appsetup\python\anaconda\envs\pytorch\Lib\site-packages\scapy文件下没有找到scapy.py文件,怎么办呢 ?
2022年06月24日 20:49:56 1层
@felicity 你仔细读文章,都有说的。