Python是目前最流行的程式語言之一。它是一種強大而簡單的語言,幾乎可以在任何開發環境中使用。
2021年Stack Overflow調查顯示,Python是大多數開發人員最想使用的程式語言。
Stack Overflow調查
藉助Jupyter Notebook、Google Colaboratory和線上編譯器等工具,您可以開始使用這種語言,而無需擔心安裝任何東西。
但是,如果您想更進一步並享受Python等通用語言的真正力量(尤其是通過建立複雜的應用程式),遲早您需要學習使用CLI或命令列介面。
大多數開發人員都同意,學習Python中最令人生畏的部分之一是CLI。但是,只需幾個命令,您就可以立即掌握它。
在本文中,您將學習Python開發中最有用的命令。
什麼是命令列介面?
命令列介面(通常縮寫為CLI)是一種基於文字的程式,用於執行程式並執行與作業系統 (OS) 相關的任務,例如建立和管理檔案。
CLI以命令的形式接受來自鍵盤的輸入,並將它們傳遞給shell或命令直譯器。這些shell解釋使用者給出的命令,執行它們並返回通常稱為輸出的結果。
CLI可以執行不同的shell。此螢幕截圖顯示了兩個不同的CLI,一個使用Python shell,另一個使用Bash:
Python和Bash shell
這兩個概念經常被混淆,所以這裡是細分:
- CLI是基於文字的介面,您可以在其中鍵入命令並獲取這些命令的輸出。它可以執行不同的shell。
- shell是一種能夠與作業系統互動的命令直譯器。
信不信由你,系統執行的每個程式都包含一個命令。您每天與之互動的視窗 ( GUI ) 由觸發命令的繫結組成,這些命令讓您可以與作業系統進行互動。
Info 命令只不過是給計算機作業系統的特定命令。
你在Python開發中需要CLI嗎?
要成為一名有效的全棧開發人員,您需要對命令列有紮實的瞭解。這是因為大多數後端框架需要直接與CLI進行某種形式的互動,如果您打算自己部署應用程式,命令列將是您最好的朋友。
如今,您可以從無數線上服務以及IDE中執行Python,從而更輕鬆地執行您的程式。但如果你從事Web開發——尤其是後端、任務自動化、區塊鏈、通過SSH使用遠端計算機,或者管理Python友好的工具(如Docker),你肯定需要處理CLI。
事實上,Python有大量的庫來構建CLI應用程式,例如Typer、Argsparse和Click。您可以從一個CLI使用者轉變為您自己的CLI應用程式的建立者!這展示了CLI環境和Python之間的緊密聯絡。
掌握CLI後,作為Python程式設計師執行任務會容易得多,並且在使用PHP、C、C++ 或Java等其他程式語言時會看到優勢。
CLI簡介
根據您執行的作業系統,您會發現使用命令列的方式有所不同。每個作業系統都有自己的開啟CLI並與之互動的方式,因為它們的檔案組織結構和預設命令shell不同。
讓我們來看看開發人員最常用的三種作業系統:Windows、Mac和Linux。
Windows
Windows是最流行的桌面作業系統,主要是因為它的價格標籤和易用性。如果要在Windows中訪問CLI,則必須開啟程式“命令提示符”或“Windows Powershell”。
請記住,Windows使用\
路徑而不是/
. 瀏覽目錄時應牢記這一點。
同樣在Windows上,您可以選擇安裝Git Bash,這是一個模擬Windows中Bash shell行為的命令列。這將使下面顯示的大多數Unix命令與您的系統相容。
Mac
對於Mac,命令列可從名為“終端”的內建應用程式訪問。您可以使用Launchpad搜尋它,或在“應用程式”下的“實用程式”資料夾中找到它。
Linux
在Linux上,根據您使用的發行版,您有許多不同的選項,但命令“Ctrl + Alt + T”通常會觸發系統中的預設終端。
現在,您應該有一個類似於下圖的視窗:
命令列介面
用於Python開發的20多個最有用的CLI命令
開啟CLI後,就該深入研究頂級shell命令了,這將使您作為Python開發人員的生活更加輕鬆。
安裝命令
您可能已經偶然發現了一百萬種安裝Python的方法。但有時,只用一個命令就更方便了。
以下是可幫助您跨不同作業系統安裝Python的不同命令。
1.Chocolatey
在Windows上,預設情況下您沒有包管理器。解決這個問題的一個選項是Chocolatey,它為您提供直接從命令列安裝的程式——顯然包括Python。
確保在執行以下命令之前安裝Chocolatey:
choco install python --pre
2. Homebrew和Pyenv
macOS預設安裝了Python 2.7。但是,現在不推薦使用Python 2.7。整個社羣已經轉向Python 3。為了有效地管理Python版本,您可以使用pyenv之類的程式。
開啟命令列並使用以下命令安裝最新版本的Homebrew(像Chocolatey這樣的包管理器):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
然後你可以使用這個簡單的命令安裝pyenv:
brew install pyenv
您可以安裝特定的Python版本並將其設定為全域性Python可執行檔案,而不是Python 2:
pyenv install 3.10 # Version you want pyenv global 3.10.4 # Sets that version as default
現在,如果您呼叫Python,它將是您使用pyenv設定的版本:
python # Python 3.10.4 .... # >>>
3. apt、pacman和dnf
隨著Python在開源軟體中的廣泛使用,大量Linux發行版都預裝了Python。如果您的系統沒有,您可以使用包管理器安裝Python。
在基於Debian的發行版(Ubuntu、Linux Mint、Kali Linux)中,您將使用apt,它代表“高階軟體包工具”:
sudo apt update sudo apt install python3
此外,如果要將Python 3設定為預設Python直譯器,可以使用以下命令:
sudo apt install python-is-python3
在基於Arch的發行版中,您可以使用官方的包管理器pacman:
sudo pacman -S python
在Fedora和基於RPM的Linux發行版(Red Hat、CentOS)中,您使用dnf:
sudo dnf install python3
直譯器命令
讓我們快速回顧一下Python命令及其包管理器pip的主要標誌——命令列選項。
4.python
python
命令有幾個標誌,表示修改程式碼執行行為的選項。
首先,要執行Python檔案,只需呼叫直譯器並新增檔名,包括.py
副檔名:
python helloworld.py
如果您需要記住標誌的作用,您可以help
在以下3個簡報中的任何一箇中使用該標誌:
python -? python -h python --help
要列印(檢視)您正在執行的Python版本,請使用以下命令:
python -V python --version
如果您想在不開啟和編輯.py
檔案的情況下執行Python程式碼,您可以使用命令標誌直接從終端執行它:
# Hello, World! python -c "print('Hello, World!')"
m
標誌將Python模組作為指令碼執行。當您想使用內建的venv模組建立虛擬環境時,這非常有用:
python -m venv .venv
5.pip
pip命令在Python包索引 (PyPI) 中查詢包,解析依賴項,並安裝您指定的包版本。
要安裝Python包,您只需鍵入要安裝的包pip
的名稱和名稱。
以下命令將安裝最新版本的軟體包:
pip install django
如果您需要特定版本,請執行以下命令:
# pip install package==version pip install django==4.0.4
在處理協作專案時,您需要跟蹤依賴關係,通常使用需求檔案。使用該r
標誌,您可以從文字檔案中讀取和安裝軟體包:
pip install -r requirements.txt
另一個常用的功能是freeze
標誌。它用於輸出您在環境中安裝的軟體包版本列表。您可以使用它將依賴項輸出到需求檔案:
pip freeze >> requirements.txt
許可權命令
Python非常擅長編寫指令碼和檔案處理。要處理這些任務,您需要了解許可權在作業系統中的工作方式。
6. sudo,runas
在基於Unix的系統(macOS、Linux、BSD)中,您必須具有超級使用者許可權才能執行某些任務,例如安裝程式,就像我們上面所做的那樣。
sudo命令允許您短暫獲得管理員許可權以執行這些命令之一。
以下是全域性安裝ueberzug(影象預覽Python包)的示例:
sudo pip install ueberzug
Windows等效項是Runas,它以不同使用者或管理員身份執行指令碼:
runas /noprofile /user:Administrator cmd
還有其他專案,例如Gsudo,這使得許可權提升過程比使用其他內建Windows命令更容易:
:: Installs gsudo choco install gsudo :: Reads a file named MySecretFile.txt gsudo type MySecretFile.txt
7. chmod
chmod
用於更改Unix中檔案和目錄的許可權。
一個常見的用法是使Python指令碼可執行:
# Makes mypythonscript.py executablechmod +x mypythonscript.py
使指令碼可執行後,您可以使用以下./
符號直接執行它:
# Runs the script ./mypythonscript.py
導航命令
在命令列介面中導航檔案系統是Python開發人員的日常任務。以下是使用Python程式設計時用於導航系統的一些基本命令。
8. ls, dir
要列出目錄(資料夾)的內容,您必須使用ls
(Unix) 或dir
(Windows) 命令。這可能是您第一次遇到CLI時學到的第一個命令。
這是使用的語法:
ls # Shows the contents of the working directory ls mydirectory
以下是本地檔案系統中資料夾內容的示例:
ls test_python/ # classes_error.py radius.py test-Django
該命令有許多有用的標誌。事實上,ls -al
檢視隱藏檔案(以點開頭的檔案)以及每個檔案的模式、大小和日期通常被稱為檢視隱藏檔案:
alias ls="ls -al" # Results total 20 drwx------ 3 daniel daniel 4096 ene 16 19:13 . drwxr-xr-x 36 daniel daniel 4096 may 17 22:18 .. -rw------- 1 daniel daniel 32 nov 17 2020 classes_error.py -rw------- 1 daniel daniel 327 nov 10 2020 radius.py drwx------ 4 daniel daniel 4096 ene 16 01:07 test-Django
對於Windows,您可以通過Git Bash使用ls
,也可以使用內建dir
命令:
dir
9.密碼
pwd
代表“列印工作目錄”,它正是這樣做的:為您提供您所在目錄的完整路徑:
pwd # /home/daniel/github/HTML-site/images
如果您曾經在終端中迷失過自己,那麼這個命令就是救命稻草。
您可以在Windows中使用cd
不帶引數的命令實現相同的輸出(請注意,Unix中的相同命令會將您帶到主目錄):
# Only on Windows cd # D:\Folder\subFolder
10.cp
使用圖形檔案管理器複製檔案很直觀,但效率低下。使用此命令,您可以在系統上覆制任何型別的檔案:
cp old_file.txt copy_old_file.txt
要複製目錄的所有內容,您必須使用cp -r
:
cp -r originaldirectory/ newdir
cp
命令在Windows中是copy
:
copy old_file.txt copy_old_file.txt /a
11. cat, type
要在終端中列印文字檔案的內容而不使用編輯器開啟檔案,您可以在Unix和Windows上使用cat
、more
或:less
type
cat old_file.txt # Unix type old_file.txt # Windows # Content Hi there I hope you're enjoying the article ... as much as I've enjoyed writing it! End of the sample.
12. mv, move
mv
命令將檔案和目錄從一個目錄移動到另一個目錄 – 基本上是剪下和貼上 – 如果目標不存在,則重新命名檔案:
# Rename files mv source_file.txt renamed_file.txt
# File to another directory mv renamed_file.txt newdir/
您還可以使用模式匹配來移動檔案。例如,將所有.py
檔案移動到另一個資料夾:
mv *.py mypythondir/
Windows上的等效命令是move
,其功能與上述幾乎相同:
# Windows move source_file.txt renamed_file.txt
13. rm, del
您可以使用rm
命令刪除檔案和目錄。
要刪除檔案而不是目錄,您可以使用:
rm file_to_remove.txt
如果要刪除空目錄,可以使用遞迴 ( -r
) 標誌:
rm -r dir_to_remove/
要刪除包含內容的目錄,您可以使用force ( -f
) 和遞迴標誌:
rm -rf dir_with_content/
在類似的形式中,您可以在Windows上找到del
。更加謹慎,因為此命令沒有上面看到的阻止標誌:
del \mywindowsdir
Info 小心這個命令。一旦你刪除了某些東西,就很難恢復它。
14. exit
完成Python程式設計後,您應該能夠退出shell會話。在大多數情況下,這也會關閉您正在使用的終端:
exit
請注意,此命令適用於Windows和Unix。
命令列編輯器
一旦您習慣了命令列,您會發現更改視窗甚至使用滑鼠來編輯程式碼都比較慢。
在您留在命令列中時擁有編碼能力不僅是節省時間的好方法,而且還可以讓您在隊友中看起來像超級英雄!
以下是一些最常用的命令列編輯器。
15. Vim/Neovim
Vim及其後代Neovim是基於鍵盤的文字編輯器,主要用於命令列。根據2021年Stack Overflow調查,他們在最受開發者喜愛的編輯器中排名第4和第1。
最喜歡的程式碼編輯器
Vim預裝在Linux和macOS上。實際上,它是您在與伺服器互動時會遇到的最多的編輯器。在Windows上,您需要使用Vim頁面中的可執行安裝程式來安裝它。
現在,您只需在命令列中輸入Vim的名稱即可享受Vim的強大功能:
vim
這將觸發一個基於文字的介面,其中包含多個鍵盤組合,用於您在Python中編碼時可能需要的每個操作。
Vim有一個陡峭的學習曲線,但是一旦你掌握了它,你就不會很快轉向其他東西。
Vi改進
Info 要退出Vim,請按“Escape”並鍵入:q
。
16.Nano
Nano是另一個主要用於快速編輯的命令列文字編輯器。
假設您在程式碼中引入了語法錯誤,但不想開啟編輯器來更正它。Nano可幫助您直接從CLI修復它:
nano
Info 如果上述命令出現“未知命令”錯誤,請回溯並遵循完整的安裝過程。
17. Emacs
Emacs是您能找到的最具擴充套件性和可定製性的文字編輯器之一。它有一個專門用於Python程式設計的部分,您可以在其中找到大量外掛來增強您的開發體驗。
Emacs幾乎在所有作業系統中都可用,因此如果您尚未安裝,請檢視下載說明。
要從命令列型別開啟Emacs,請使用無視窗系統標誌 ( -nw
):
emacs -nw
開發工具
Python開發不僅意味著編碼,還意味著處理其他工具,例如虛擬環境、版本控制系統和部署工具。
通過學習下面的命令,您將在使用Python開發任何型別的應用程式時獲得優勢。
18. virtualenv/venv
虛擬環境是Python開發中使用的一項關鍵技術。使用它們,您可以將跨不同專案使用的包隔離到一個輕量級資料夾中,通常命名為.venv
.
使用Python 3.3或更高版本,您可以使用內建的venv模組來建立虛擬環境:
# .venv being the name of the virtual environment python -m venv .venv
virtualenv是一個外部專案,與內建選項相比,它更快、更具可擴充套件性。要建立虛擬環境,首先安裝virtualenv包:
# Installs virtualenv pip install --user virtualenv # Creates a .venv virtual environment virtualenv .venv
接下來,您需要啟用虛擬環境。在Windows上,根據您使用的是cmd還是PowerShell(推薦)執行以下命令之一:
:: PowerShell .venv\Scripts\Activate.ps1
:: Cmd .venv\Scripts\activate.bat
在Linux或macOS上:
source .venv/bin/activate
19. Git
版本控制是軟體開發中最重要的實踐之一。它使我們能夠跟蹤所有程式碼修改,與其他開發人員協作,並清楚地瞭解整個開發過程。
Git是迄今為止最常用的版本控制系統。您可以從其下載頁面安裝它。
安裝後,您可以開啟終端並使用以下命令檢視所有可用選項:
git help
要建立儲存庫,請使用git init
並鍵入您的儲存庫的名稱:
git init name_repository Initialized empty Git repository in /home/daniel/name_repository/.git/
請注意,這隻會建立一個本地Git儲存庫。如果您想擁有一個遠端儲存庫來線上儲存所有更改,您應該使用GitHub或BitBucket之類的平臺。
要克隆遠端儲存庫,您將使用git clone
和儲存庫的源。在下面的示例中,我們通過SSH克隆GitHub儲存庫:
git clone git@github.com:DaniDiazTech/HTML-site.git ... Cloning into 'HTML-site'... remote: Enumerating objects: 24, done. remote: Counting objects: 100% (24/24), done. remote: Compressing objects: 100% (18/18), done. remote: Total 24 (delta 6), reused 21 (delta 4), pack-reused 0 Receiving objects: 100% (24/24), 4.98 MiB | 438.00 KiB/s, done. Resolving deltas: 100% (6/6), done.
20. Docker
Docker使將Python應用程式打包和釋出為輕量級、可移植、自給自足的容器變得更加容易。它有助於開發和部署,允許所有協作者使用相同的設定。
要使用Docker,您必須嚴格遵循獲取Docker頁面上為您的作業系統顯示的安裝過程。
要列出可用的Docker命令,請執行以下命令:
docker help
在這個狹窄的部分中很難解釋如何執行Docker compose,因此請務必檢視官方文件。
21. Grep
Grep是一個基本的命令列實用程式,用於在純文字檔案中進行模式匹配。
一個常見的用法是查詢一個單詞在檔案中重複的次數:
grep -ic python pythondocument.txt 2
pythondocument.txt
在上面的示例中,我們獲得了在檔案中找到Python(不區分大小寫)的次數。
grep的Windows等效項是findstr。但是,它不是完全相同的程式。您可以使用Git Bash在Windows中使用grep:
findstr /i /C python pythondocument.txt 2
22.HTTPie
HTTPie是一個命令列HTTP客戶端,可以更輕鬆地與Web服務互動。例如,您可以使用它來測試您的Python API,或與第三方網站進行互動。
這個CLI工具幾乎在每個包管理器中都可用,如HTTPie的官方文件所示。但是,它也可以作為Python包提供,因此您可以使用pip安裝它。
pip install httpie
以下是查詢遠端 API 的方式——在本例中為GitHub API:
http GET https://api.github.com/users/danidiaztech HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * ...
23. ping
ping
是幾乎所有作業系統上預設可用的CLI命令。它的工作原理是向IP地址傳送資料包並測試傳輸資料和接收響應所需的時間,然後以毫秒為單位顯示結果
該命令主要用於驗證兩臺機器之間的連線,即你的機器和你在web伺服器上的Python應用程式:
ping kinsta.com PING kinsta.com(2606:4700:4400::ac40:917d (2606:4700:4400::ac40:917d)) 56 data bytes 64 bytes from 2606:4700:4400::ac40:917d (2606:4700:4400::ac40:917d): icmp_seq=1 ttl=50 time=686 ms
命令參考表
下面,您可以找到我們討論過的每個命令的快速參考:
命令 | 用法 |
---|---|
choco |
在Windows上安裝包 |
brew |
macOS包管理器 |
apt, pacman, dnf |
不同Linux發行版上的包管理器 |
python |
執行Python直譯器 |
pip |
Python包管理器 |
sudo, runas |
用於擴充套件許可權的Unix和Windows程式 |
chmod |
更改檔案許可權 |
ls |
列出目錄的內容 |
pwd |
列印工作目錄 |
cp |
複製檔案和目錄 |
cat |
列印檔案內容 |
mv, move |
移動(重新命名)檔案和目錄 |
rm, del |
刪除檔案和目錄 |
exit |
退出當前shell會話 |
vim, neovim |
高效的文字編輯 |
nano |
用於快速編輯的文字編輯器 |
emacs |
最可定製的編輯器 |
virtualenv, venv |
虛擬環境生成器 |
git |
版本控制系統 |
docker |
容器化應用 |
grep |
模式匹配實用程式 |
http |
Web服務測試實用程式 |
ping |
測試網路連線 |
kill |
終止程式 |
小結
Python是最容易學習的程式語言之一。您會發現的唯一絆腳石是當您在不瞭解您需要的命令的情況下進入命令列時。
在本文中,您瞭解了命令列及其用於Python開發的一些最流行的命令。
評論留言