python - Scapy,Pycharm 问题需要解决 [Cannot find reference 'ARP' in 'all.py']
问题描述
是的...在将我的头从键盘上摔下来大约两天后,我以前已经正常工作了......但是,我的 SSD 出现故障,我丢失了所有的虚拟机,我不记得我为解决这个问题做了什么。
在做了一些研究之后,我得出的结论是,问题在于 Pycharm 以及它如何进行动态导入。尽管如此,就像我之前所说的那样,我之前有过这个工作。
我尝试使用最新和旧版本的 Pycharm 和 Python 无济于事。
有谁知道我该如何解决这个问题?这似乎是谷歌上的一个常见问题,没有明确的解决方案。
from scapy.layers.l2 import ARP as ARP
from scapy.layers.l2 import Ether as Ether
这是我迄今为止找到的解决方案。但是,如果这不是必需的,并且 scapy.all 可以像我以前一样使用,那将会很有帮助。如果我自己找到解决方案,我会在这里发布。
解决方案
我的解决方案是使用 VS Code 和 pipenv 而不是 Pycharm,因为您可以获得 Pycharm 的所有好处而不会出现问题。
- 使用全局安装 pipenv
sudo pip install pipenv
pipenv install --python 3.8
使用特定版本的 python创建虚拟环境- 做
pipenv shell
启动虚拟环境 - 安装 scapy 使用
pipenv install scapy
- 在 VS Code 中使用 when 选择正确的虚拟环境
Ctrl + Shift + P
来更改设置,搜索“解释器”并选择“Python:选择解释器”选项并选择您的 Pipenv 环境 python program.py
在终端中运行代码
这样您就可以使用import scapy.all as scapy
,这对于生产来说不是最好的,但它非常适合测试和快速开发。
推荐阅读
- git - 如何用另一个分支更新 github 分支中的文件?
- python - 在 Python 中从 Web 抓取时获取 \r\n\r\n
- haskell - 使用 where 子句和保护模式匹配时变量不在范围内
- reactjs - React Native:我应该用 gem 还是 homebrew 安装 Cocoapods?
- c++ - 是否可以在 C++ 中键入多行字符串输出而不必不断添加前缀“cout”?
- reactjs - 使用 id 作为参数的反应路由器不起作用
- jquery - Chrome 扩展程序错误:“内容安全策略指令‘沙盒’在仅报告策略中被忽略。”
- c - 用C读取文件时换行的问题
- javascript - 如何让我的 transitionend 事件触发?
- php - 在不知道年份的情况下获取日期和月份的未来时间戳