軟件安裝
Anaconda
Anaconda通過管理工具包、開發環境、Python版本,大大簡化了python工作流程。不僅可以方便地安裝、更新、卸載工具包,而且安裝時能自動安裝相應的依賴包,同時還能使用不同的虛擬環境隔離不同要求的項目。假如正在做的項目A和項目B分別基於python2和python3,而第電腦只能安裝一個環境,這個時候Anaconda就派上了用場,它可以創建多個互不干擾的環境,分別運行不同版本的軟件包,以達到兼容的目的。
安裝非常簡單,前往Anaconda官網 即可下載安裝,國內用戶可以到清華大學TUNA鏡像站下載,安裝過程中注意到這一步
- 第1項指將Anaconda的默認環境設置添加到系統環境,也就是說如果之前安裝過python並添加到了環境,選了這一項之後原來的python會被覆蓋掉,默認使用Anaconda的默認環境。
- 第2項指設置Anaconda的默認環境爲python3.5.
安裝完成後Anaconda會創建一個叫base的默認環境,如果你不切換到其他指定環境,就會一直在默認環境運行。
Anaconda環境管理
接下來進行Anaconda環境管理。
打開:開始–>所有程序–>Anaconda3–>Anaconda prompt
conda env --help
剛剛系統默認創建了名叫base的默認環境,可以使用conda命令查看當前有多少環境
conda env list 查看所有環境
或者
conda info --envs
創建新的環境
輸入
conda create --name your_env_name
或者
conda create -n your_env_name
your_env_name 就是新創建的環境名,你可以在裏面安裝其他包但不會與現有環境衝突,如果要在創建環境時指定包內容, 可以用
conda create -n your_env_name python=3.5
如果要指定多個包 可以用
conda create -n your_env_name python=3.5 numpy pandas
要指定特殊版本號加上=版本號就行,默認是最新的
對了,安裝前爲了保障查詢到最新包情況,最好使用
`conda update --all 更新包信息。
例如現在要創建一個名叫 learningpy的基於py3的環境
conda update --all
conda create -n learningpy python=3.7
系統會詢問是否創建,輸入y回車後,系統將列出必要安裝的包,
conda有一點好處是,如果需要安裝一個包,系統將自動檢查這個包需要的前置包並且安裝,比如要安裝TensorFlow,而TensorFlow會用到很多像前置包像pandas、matiplot等,如果在單純的python下沒有安裝pandas等包就直接安裝TensorFlow,那麼和有可能無法使用,而使用conda安裝TensorFlow將會詢問並自動幫你把缺少的前置包安裝好
創建完新的環境我們查看環境列表
conda env list
不同環境切換
activate 環境名 #進入環境
deactivate #退出環境
linux和mac用戶的命令不一樣
source source activate 環境名
source deactivate 環境名
一些常用命令
創建一個新環境fom舊的環境
conda create -n your_env_name --clone oldname
刪除某個環境
conda remove -n your_env_name --all
導出環境配置(非常有用,比如你想幫朋友安裝和你一模一樣的環境,你可以直接導出一個配置文件給他,就能免除很多人力安裝調試)
conda env export > environment.yml
將會在當前目錄生成一個environment.yml,你把它交給小夥伴或拷到另一臺機器,小夥伴只需要對這個文件執行命令
conda env create -f environment.yml
就可以生成和你原來一模一樣的環境啦
anaconda包管理
上文提到了創建環境時的包管理,那麼創建好環境後如何進行包的安裝、更新和卸載呢?
當然可以通過pip安裝更新刪除這裏介紹conda
conda list 列舉當前環境下的所有包
conda list -n packagename 列舉某個特定名稱包
conda install packagename 爲當前環境安裝某包
conda install -n envname packagename 爲某環境安裝某包
conda search packagename 搜索某包
conda updata packagename 更新當前環境某包
conda update -n envname packagename 更新某特定環境某包
conda remove packagename 刪除當前環境某包
conda remove -n envname packagename 刪除某環境環境某包
conda本身和anaconda、python本身也算包
conda update conda
conda update anaconda
conda update python
conda默認源可能速度比較慢可以添加其他源,常用的有清華TUNA
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes 在包後面顯示來源
第三條執行安裝包時會顯示來自哪個源,一目瞭然
教育網用戶可以添加ipv6源,速度很快
conda config --add channels https://mirrors6.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors6.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes 在包後面顯示來源
anaconda實現原理解析
anaconda在目錄下的envs文件夾保存了環境配置,也就是把所有的安裝在這個環境下的包放在同一個文件夾中
當創建一個新環境時,anaconda將在envs中創建一個新的文件夾,這個文件夾包括了你安裝在這個環境中的所有包
anaconda通過巧妙的包管理解決的一個大難題,確實方便了很多
vscode python開發插件安裝
Python
首先當然要必備插件python了,提供了代碼分析,高亮,規範化等很多基本功能,裝好這個就可以開始愉快的寫python了。
vscode-icons
vscode現在雖然已經自帶了文件圖標,但是作爲一個顏控還是覺得略醜,這個插件提供各種圖標就非常漂亮了
Bracket Pair Colorizer
代碼顏色高亮一般只會幫你區分不同的變量,這款插件給不同的括號換上了不同的顏色,括號的多的時候非常實用。
Anaconda Extension Pack
這個插件大大增強了代碼提示功能。原始的代碼提示基本只包含了python標準庫,有了這個插件之後各種第三方庫基本都能實現代碼提示了,並且還會額外顯示每個方法的幫助。
運行python程序
.配置Python解釋器
在打開Python文件後,VS Code會自動選擇系統中配置的Python解釋器,在狀態欄中顯示,如圖:
如果需要切換解釋器,使用Ctrl+Shift+P打開命令面板,輸入python,選擇Python:Select Interpreter:
運行整個python文件
- 在代碼編輯器中:右鍵單擊任意位置,選擇在終端中運行python文件;
- 在資源管理器中:右鍵單擊python文件,選擇在終端中運行python:
運行部分python代碼
首先選中要運行的代碼,然後右鍵單擊,選擇在Python終端中運行選定內容/行:
調試python程序
Python擴展對於調試的支持:
設置斷點,檢查數據,並在逐步運行程序時使用調試控制檯;
調試許多不同類型的Python應用程序,包括:多線程,Web和遠程應用程序;
設置調試器
首先切換到調試界面,點擊調試器設置按鈕:
然後選擇調試器:
選擇調試器後VS Code會自動在工作區的.vscode目錄下建立launch.json文件:
如果需要啓動調試後自動停止在程序入口,添加下面的設置即可:
"stopOnEntry": true
設置斷點
啓動調試
啓動調試後程序停留在第一個斷點處:
使用調試控制面板進行調試:
控制面板中的按鈕從左到右依次是:
- 移動按鈕:拖住後可以移動調試控制面板;
- 繼續運行(F5);
- 單步跳過(F10);
- 單步調試(F11);
- 單步跳出(Shift+F11);
- 重啓(Ctrl+Shift+F5);
- 停止調試(Shift+F5);
VS Code的左側是變量查看窗口,監視查看窗口,堆棧查看窗口:
使用python交互環境
使用Ctrl+Shift+P打開命令面板,輸入python,選擇Python:Start REPL:
啓動的交互式環境REPL如下:
import random
from socket import *
import time
def int_random(a, b, n):
a_list = []
while len(a_list) < n :
d_int = random.randint(a, b)
a_list.append(d_int)
return a_list
def generate_random_str(randomlength=16):
"""
生成一個指定長度的隨機字符串
"""
random_str = ''
base_str = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789'
length = len(base_str) - 1
for i in range(randomlength):
random_str += base_str[random.randint(0, length)]
return random_str
if __name__ == "__main__":
data = generate_random_str(1460)
print(data)
HOST = '192.168.1.1'
PORT = 8888
BUFSIZE = 1024
ADDRESS = (HOST, PORT)
udpClientSocket = socket(AF_INET, SOCK_DGRAM)
# 發送數據
udpClientSocket.sendto(data.encode('utf-8'), ADDRESS)
time.sleep(0.000001)