Ⅰ 如何在安装pip3以及第三方python库
一。先安装python3
1. 先到官方网站下载python3的安装包,去downloads/source/ 下载的是Python-3.5.2.tar.xz
2. 上传包到服务器
3.解压
tar -xf Python-3.5.2.tar.xz
4.编译安装
安装必要依赖(至少需要如下两个,我个人就遇到如下两个)
yum install openssl-devel -y
yum install zlib-devel -y
好了现在可以安心的编译咯:
cd Python-3.5.2./configure --prefix=/opt/Python #安装目录可以自己定义无所谓。
make
make install
编译完成后会在如 /opt/下生成Python的文件夹 ,没错这就是编译完成的python --为了方便之行小伙伴们可以自己定义一个软连接如下:
# ln -s /opt/Python/bin/python3 /usr/bin/python3
这样就可以直接食用python3了如下:
Ⅱ python3.2 下的抓包库。。无论是pypcap还是scapy。貌似都没有py3的版本。。跪求一个可以python3用
有一个py3kcap是pycap的封装版本,可以用于python3版本。
给你一个使用的示例代码:
#!/usr/bin/env python3.2
import ctypes,sys
from ctypes.util import find_library
#pcap = ctypes.cdll.LoadLibrary("libpcap.so")
pcap = None
if(find_library("libpcap") == None):
print("We are here!")
pcap = ctypes.cdll.LoadLibrary("libpcap.so")
else:
pcap = ctypes.cdll.LoadLibrary(find_library("libpcap"))
# required so we can access bpf_program->bf_insns
"""
struct bpf_program {
u_int bf_len;
struct bpf_insn *bf_insns;}
"""
class bpf_program(ctypes.Structure):
_fields_ = [("bf_len", ctypes.c_int),("bf_insns", ctypes.c_void_p)]
class sockaddr(ctypes.Structure):
_fields_=[("sa_family",ctypes.c_uint16),("sa_data",ctypes.c_char*14)]
class pcap_pkthdr(ctypes.Structure):
_fields_ = [("tv_sec", ctypes.c_long), ("tv_usec", ctypes.c_long), ("caplen", ctypes.c_uint), ("len", ctypes.c_uint)]
pkthdr = pcap_pkthdr()
program = bpf_program()
# prepare args
snaplen = ctypes.c_int(1500)
#buf = ctypes.c_char_p(filter)
optimize = ctypes.c_int(1)
mask = ctypes.c_uint()
net = ctypes.c_uint()
to_ms = ctypes.c_int(100000)
promisc = ctypes.c_int(1)
filter = bytes(str("port 80"), 'ascii')
buf = ctypes.c_char_p(filter)
errbuf = ctypes.create_string_buffer(256)
pcap_close = pcap.pcap_close
pcap_lookupdev = pcap.pcap_lookupdev
pcap_lookupdev.restype = ctypes.c_char_p
#pcap_lookupnet(dev, &net, &mask, errbuf)
pcap_lookupnet = pcap.pcap_lookupnet
#pcap_t *pcap_open_live(const char *device, int snaplen,int promisc, int to_ms,
#char *errbuf
pcap_open_live = pcap.pcap_open_live
#int pcap_compile(pcap_t *p, struct bpf_program *fp,const char *str, int optimize,
#bpf_u_int32 netmask)
pcap_compile = pcap.pcap_compile
#int pcap_setfilter(pcap_t *p, struct bpf_program *fp);
pcap_setfilter = pcap.pcap_setfilter
#const u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h);
pcap_next = pcap.pcap_next
# int pcap_compile_nopcap(int snaplen, int linktype, struct bpf_program *program,
# const char *buf, int optimize, bpf_u_int32 mask);
pcap_geterr = pcap.pcap_geterr
pcap_geterr.restype = ctypes.c_char_p
#check for default lookup device
dev = pcap_lookupdev(errbuf)
#override it for now ..
dev = bytes(str("wlan0"), 'ascii')
if(dev):
print("{0} is the default interface".format(dev))
else:
print("Was not able to find default interface")
if(pcap_lookupnet(dev,ctypes.byref(net),ctypes.byref(mask),errbuf) == -1):
print("Error could not get netmask for device {0}".format(errbuf))
sys.exit(0)
else:
print("Got Required netmask")
handle = pcap_open_live(dev,snaplen,promisc,to_ms,errbuf)
if(handle is False):
print("Error unable to open session : {0}".format(errbuf.value))
sys.exit(0)
else:
print("Pcap open live worked!")
if(pcap_compile(handle,ctypes.byref(program),buf,optimize,mask) == -1):
# this requires we call pcap_geterr() to get the error
err = pcap_geterr(handle)
print("Error could not compile bpf filter because {0}".format(err))
else:
print("Filter Compiled!")
if(pcap_setfilter(handle,ctypes.byref(program)) == -1):
print("Error couldn't install filter {0}".format(errbuf.value))
sys.exit(0)
else:
print("Filter installed!")
if(pcap_next(handle,ctypes.byref(pkthdr)) == -1):
err = pcap_geterr(handle)
print("ERROR pcap_next: {0}".format(err))
print("Got {0} bytes of data".format(pkthdr.len))
pcap_close(handle)
Ⅲ Python3基础
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码:
在 Python 3 中,非 ASCII 标识符也是允许的了。
保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:
Python中单行注释以 # 开头,实例如下:
执行以上代码,输出结果为:
多行注释可以用多个 # 号,还有 ''' 和 """:
执行以上代码,输出结果为:
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:
以下代码最后一行语句缩进数的空格数不一致,会导致运行错误:
以上程序由于缩进不一致,执行后会出现类似以下错误:
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(),例如:
python中数字有四种类型:整数、布尔型、浮点数和复数。
实例
输出结果为:
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住: 空行也是程序代码的一部分。
执行下面的程序在按回车键后就会等待用户输入:
以上代码中 ," "在结果输出前会输出两个新的空行。一旦用户按下 enter 键时,程序将退出。
Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:
执行以上代码,输出结果为:
缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句(clause)。
如下实例:
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="" :
以上实例执行结果为:
在 python 用 import 或者 from...import 来导入相应的模块。
将整个模块(somemole)导入,格式为: import somemole
从某个模块中导入某个函数,格式为: from somemole import somefunction
从某个模块中导入多个函数,格式为: from somemole import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemole import *
import sys print ( ' ================Python import mode========================== ' ) ; print ( ' 命令行参数为: ' ) for i in sys . argv : print ( i ) print ( ' python 路径为 ' , sys . path )
from sys import argv , path # 导入特定的成员 print ( ' ================python from import=================================== ' ) print ( ' path: ' , path ) # 因为已经导入path成员,所以此处引用时不需要加sys.path
很多程序可以执行一些操作来查看一些基本信息,Python可以使用-h参数查看各参数帮助信息:
Ⅳ Python3 条件控制和循环语句
在嵌套 if 语句中,可以把 if...elif...else 结构放在另外一个 if...elif...else 结构中。
在Python中没有switch – case语句。
Python 中没有 do..while 循环。
while 循环使用 else 语句,在 while … else 在条件语句为 false 时执行 else 的语句块。
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
range()函数:range(begin,end,step) 不包含end
break语句用于终止当前循环。break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
break 和 continue 语句通常与 if, if...else 和 if...elif...else 语句一起使用。
循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被 break 终止时不执行。
1.如果 else 语句和 while 循环语句一起使用,则当条件变为 False 时,则执行 else 语句
2.如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行
Python pass语句是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
Ⅳ python中pypcap的参数问题
win10系统。使用pcap创建对象时候,无法给定网卡名。比如:mem1=pcap.pcap()这样的话可以创建对象,对应的网卡就是无线网卡,程序可以运行想指定网卡的时候:mem1=pcap.pcap('MYPC')#MYPC是网卡名就无法运行所以我是网卡名弄错了嘛==如果是的话去哪找网卡名==...展开
实际上就是pcap的网卡参数应该填什么
Ⅵ 如何在安装pip3以及第三方python库
在安装pip3以及第三方python库(for Mac)
环境
OS:10.12.3 (16D32) macOS Sierra
Python3: Python 3.6.1
什么是pip
Python之所以强大,其中一个原因是其丰富的第三方库。pip则是python第三方库的包管理工具。
由于在Mac上python2和python3是共存的。因而python3对应的包管理工具的命令就是:pip3如何安装pip3如果通过homebrew安装python3,那么pip3会同时安装。所以建议直接通过homebrew安装python3:
$brew install python3//no need sudo
如果你已经通过其他渠道安装了python3但是尚未安装pip3,那么需要通过以下步骤实现安装:
https : // pip.readthedocs .io/en/stable/installing/上述的链接是官方给出的方法,但是有几个地方需要注意,最好按照我博客一步步来:
https : // bootstrap .pypa .io/get-pip.py
复制粘贴另存为链接中的文本,可以保存为get-pip.py。
注意:其中内容很多,必须等网页加载完再复制,然后通过已经安装的python3解释器解释执行另存为的文件$python3 get-pip.py再次执行上述命令,显示:
Requirement already up-to-date: pip in /usr/local/lib/python3.6/site-packages1安装成功
如何安装第三方库
有了pip3以后,安装第三方库就容易多了,比如:
$pip3 install requests
Collecting requests
Downloading requests-2.13.0-py2.py3-none-any.whl (584kB)100% |████████████████████████████████| 593kB 298kB/sInstalling collected packages: requestsSuccessfully installed requests-2.13.0
Ⅶ 自学Python:解决Python3无法安装PIL三方库的办法
如果你是Python3的版本,安装PIL的时候,会出现下面的错误。
ERROR: Could not find a version that satisfies the requirement PIL (from versions: none)
ERROR: No matching distribution found for PIL
WARNING: You are using pip version 21.1.1; however, version 21.2.1 is available.
You should consider upgrading via the 'D:\python\Scripts\python.exe -m pip install --upgrade pip' command.
英文看不懂,可以找个翻译软件翻译一下。意思就是现在PIL没有支持python3的版本,目前只支持python2。那么在python3就不能用了吗?
当然不是,经过查询资料发现,在python3上使用Pillow代替PIL,只要安装Pillow就可以正常调用PIL的所有功能了。
安装Pillow后如果想要使用,不能使用import Pillow,执行会报下面的错误。
MoleNotFoundError: No mole named 'Pillow'
而是要直接使用import PIL调用。
_______________END______________