No module named ‘scapy.all’; ‘scapy’ is not a package 解决方法

今天用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'不是包

rom scapy.all import * ModuleNotFoundError: No module named 'scapy.all'; 'scapy' is not a package

 

原因:

1、没有安装scapy;

2、你的目录下还有一个scapy.py的文件;

 

解决方法

知道了原因,解决起来就容易多了,现在就来说说我是如何解决这个问题的?

我的电脑是Windows10 + Python3.7版本。

 

第一步:查看自己是否安装了scapy?

没有安装scapy,可以直接用”pip install scapy“来安装。pip install scapy

 

通过上图,可以清楚的知道我已经安装了scapy,路径位置在“f:\python3.7.0\lib\site-packages”;

\lib\site-packages\scapy

 

第二步:查看我的当前目录是否有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 文件了。

    A+
发布日期:2019年11月01日 13:23:19  所属分类:Python
最后更新时间:2019-11-01 13:24:30
付杰
  • ¥ 199.0元
  • 市场价:499.0元
  • ¥ 45.0元
  • 市场价:45.0元
  • ¥ 159.0元
  • 市场价:599.0元
  • ¥ 299.0元
  • 市场价:599.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  0   博主  0

  1. 头像 felicity 0

    但是我在F:\appsetup\python\anaconda\envs\pytorch\Lib\site-packages\scapy文件下没有找到scapy.py文件,怎么办呢 :?:

    • 付杰 付杰

      @felicity 你仔细读文章,都有说的。