Ⅰ 如何在安裝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______________