前言
Python 是目前最流行的编程语言之一。它是一种强大而简单的语言,几乎可以在任何开发环境中使用。
2023 年 Stack Overflow 调查显示,Python 是大多数开发人员最想使用的编程语言。
借助 Jupyter Notebook、Google Colaboratory 和在线编译器等工具,您可以开始使用这种语言,而无需担心安装任何东西。
但是,如果您想更进一步并享受 Python 等通用语言的真正力量(尤其是通过创建复杂的应用程序),迟早您需要学习使用 CLI 或命令行界面。
大多数开发人员都同意,学习 Python 中最令人生畏的部分之一是 CLI。但是,只需几个命令,您就可以立即掌握它。
在本文中,您将学习 Python 开发中最有用的命令。
- 什么是命令行界面?
- CLI 简介
- 用于 Python 开发的 20 多个最有用的 CLI 命令
- 命令参考表
什么是命令行界面?
命令行界面(通常缩写为 CLI)是一种基于文本的程序,用于运行程序并执行与操作系统 (OS) 相关的任务,例如创建和管理文件。
CLI 以命令的形式接受来自键盘的输入,并将它们传递给 shell 或命令解释器。这些 shell 解释用户给出的命令,执行它们并返回通常称为输出的结果。
CLI 可以执行不同的 shell。此屏幕截图显示了两个不同的 CLI,一个使用 Python shell,另一个使用 Bash:
这两个概念经常被混淆,所以这里是细分:
- 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 executable
chmod +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 代表'打印工作目录',它正是这样做的:为您提供您所在目录的完整路径:
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:
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 有一个陡峭的学习曲线,但是一旦你掌握了它,你就不会很快转向其他东西。
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 [email protected]: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 wbolt.com
PING wbolt.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 开发的一些最流行的命令。


