Python 包管理神器:pip install 完全指南 – wiki基地


Python 包管理神器:pip install 完全指南

前言:为什么我们需要包管理?

Python 是一门强大且灵活的编程语言,其生态系统中包含着海量的第三方库(Libraries)和框架(Frameworks)。这些库提供了各种各样的功能,从数据科学(如 NumPy, pandas, scikit-learn)到 Web 开发(如 Django, Flask)再到人工智能(如 TensorFlow, PyTorch),几乎涵盖了软件开发的各个领域。

然而,在没有一个统一的管理工具之前,安装、更新、卸载这些库是一个令人头疼的问题。开发者需要手动下载源代码,解压,然后运行 setup.py install 等命令。更糟糕的是,不同的库可能依赖于同一个库的不同版本,这会导致著名的“依赖地狱”(Dependency Hell)问题。在一个项目中安装了某个库的 A 版本,而在另一个项目中需要同一个库的 B 版本,如果它们都安装在系统的同一个位置,就会发生冲突,导致程序无法正常运行。

为了解决这些问题,Python 社区发展出了包管理器。其中,pip (Python Package Installer) 是事实上的标准。自 Python 3.4 版本起,pip 已经内置于 Python 安装包中,极大地简化了包的安装和管理流程。

本文将深入探讨 pip 的核心命令之一:pip install。我们将从最基础的用法开始,逐步深入到高级选项、不同来源的安装、依赖管理、虚拟环境的结合使用,以及常见问题的排查。掌握 pip install 的各种技巧,将使你在 Python 开发中如虎添翼。

第一部分:理解 pip 与 Python 包

在我们深入研究 pip install 之前,先明确几个概念:

  1. 模块 (Module): 一个包含 Python 代码的文件(以 .py 结尾)。
  2. 包 (Package): 一个包含多个模块的目录,通常带有一个 __init__.py 文件(在现代 Python 中不是强制要求,但有助于保持兼容性),可以组织模块的命名空间。
  3. 分发包 (Distribution Package): 这是通过 pip 安装的实际单元。它可以是一个纯 Python 包,也可以包含编译后的代码(扩展模块)。分发包通常包含项目的元数据(如名称、版本、依赖项)以及实际的代码。
  4. PyPI (Python Package Index): Python 官方的第三方软件包索引,它是 pip 默认查找、下载和安装包的地方。你可以将其想象成一个巨大的 Python 软件包仓库。

pip 的作用: pip 负责从 PyPI 或其他指定的源查找分发包,下载它们,并按照项目的要求将它们安装到你的 Python 环境中,同时处理这些包的依赖关系。

如何检查 pip 是否已安装?

打开你的终端或命令行界面,输入:

bash
pip --version

或者

bash
pip -V

如果看到 pip 的版本信息,说明它已经安装并配置好了。如果提示找不到命令,你可能需要检查你的 Python 安装,或者手动安装 pip(尽管这在较新版本的 Python 中很少见)。

更新 pip 自身:

虽然 pip 随 Python 安装,但它自身也会不断更新。保持 pip 最新是一个好习惯,可以确保你拥有最新的功能和bug修复。

bash
python -m pip install --upgrade pip

这里使用 python -m pip 的方式运行 pip 更为稳妥,可以确保你使用的是当前环境中对应的 pip。

第二部分:pip install 的核心用法

pip install 是 pip 中最常用、最重要的命令。它的基本语法非常简单:

bash
pip install <package_name>

执行这个命令后,pip 会:
1. 连接到默认的 PyPI 仓库。
2. 搜索 <package_name> 这个包。
3. 找到最新稳定版本的包及其依赖项。
4. 下载这些包。
5. 将它们安装到当前活跃的 Python 环境(虚拟环境或系统环境)的 site-packages 目录中。

示例:安装 Requests 库

Requests 是一个非常流行的用于发起 HTTP 请求的库。

bash
pip install requests

输出可能类似这样:

Collecting requests
Downloading requests-2.28.1-py3-none-any.whl (62 kB)
Collecting charset-normalizer~=2.0.0
Downloading charset_normalizer-2.0.12-py3-none-any.whl (39 kB)
Collecting idna<4,>=2.5
Downloading idna-3.4-py3-none-any.whl (61 kB)
Collecting urllib3<1.27,>=1.21.1
Downloading urllib3-1.26.12-py2.py3-none-any.whl (140 kB)
Installing collected packages: urllib3, idna, charset-normalizer, requests
Successfully installed charset-normalizer-2.0.12 idna-3.4 requests-2.28.1 urllib3-1.26.12

从输出可以看出,pip 不仅安装了 requests,还自动安装了它依赖的其他包(charset-normalizer, idna, urllib3)。

安装指定版本

有时候,你可能需要安装某个包的特定版本,而不是最新的。这可以通过 == 语法来实现:

bash
pip install <package_name>==<version>

示例:安装 Django 3.2 版本

bash
pip install django==3.2

安装版本范围

你也可以指定一个版本范围,pip 会在这个范围内选择一个合适的版本进行安装:

  • >= 大于或等于
  • <= 小于或等于
  • > 大于
  • < 小于
  • != 不等于
  • ~= 兼容版本(例如 ~=1.4 意味着大于等于 1.4 且小于 2.0)

“`bash

安装版本大于等于 2.0 但小于 3.0 的 Flask

pip install Flask>=2.0,<3.0

安装版本兼容 1.4 的 SomePackage (如 1.4.x, 1.5.x, … 但不包括 2.0 及以上)

pip install SomePackage~=1.4
``
兼容版本
~=是一个很有用的操作符,它会安装满足给定版本号左侧部分(最后一个. 左侧)一致的最新版本。例如,~=1.4.1会匹配1.4.1,1.4.5,1.4.9等,但不会匹配1.5.01.3.0。而~=1.4则匹配1.4,1.5,1.9等,但不匹配2.0`。

同时安装多个包

你可以在一个命令中列出多个包名,用空格分隔:

bash
pip install package1 package2 package3

示例:同时安装 NumPy 和 pandas

bash
pip install numpy pandas

用户安装 (--user)

默认情况下,pip 会尝试将包安装到当前 Python 环境的 site-packages 目录。如果当前环境是系统级的 Python,并且你没有管理员权限,可能会遇到权限错误。这时可以使用 --user 标志:

bash
pip install --user <package_name>

这会将包安装到你用户主目录下的一个特定位置(通常是 ~/.local/lib/pythonX.Y/site-packages)。这样安装的包只对当前用户可用,不会影响系统的其他用户或系统 Python 安装。然而,最佳实践是使用虚拟环境,这我们稍后会详细讨论。

升级已安装的包 (--upgrade-U)

如果某个包已经安装,而你想升级到最新版本(或指定版本),可以使用 --upgrade-U 标志:

“`bash
pip install –upgrade

或者

pip install -U “`

示例:升级 Requests

bash
pip install -U requests

pip 会检查 PyPI 上 Requests 的最新版本,如果比当前安装的版本新,就会进行升级。它也会相应地升级或安装新的依赖项。

降级包

要降级一个包,只需指定旧的版本号并安装即可。pip 会自动处理旧版本的安装和新版本的卸载:

bash
pip install <package_name>==<older_version>

示例:降级 Django 到 2.2 版本

bash
pip install django==2.2

pip 会先卸载当前安装的 Django 版本,然后安装 2.2 版本。

第三部分:从不同来源安装包

除了从默认的 PyPI 仓库安装,pip install 还支持从多种不同的来源安装包。

1. 从 requirements 文件安装 (-r)

在一个项目中,管理所有依赖及其精确版本是一个重要的任务,以确保项目在不同环境中的可重现性。requirements.txt 文件就是为此目的而生。它是一个文本文件,每行包含一个要安装的包及其可选的版本规范。

文件格式通常是:

package_name
package_name==version
package_name>=version,<another_version
...

示例 requirements.txt 内容:

requests==2.28.1
Flask>=2.0.0,<3.0.0
numpy
pandas~=1.4

使用 -r 标志可以一次性安装文件中列出的所有包及其依赖:

bash
pip install -r requirements.txt

这是项目开发中最常用的 pip install 方式之一。

如何生成 requirements.txt 文件?

在你已经安装了项目所需的所有包之后,可以使用 pip freeze 命令生成一个包含当前环境中所有已安装包及其精确版本列表的文件:

bash
pip freeze > requirements.txt

注意: pip freeze 会列出当前环境中 所有 包,包括那些作为其他包依赖安装的包。对于大型项目或共享环境,这可能包含很多与你项目不直接相关的包。一些更高级的依赖管理工具(如 pip-toolsPoetryRyePDM)提供了更精确的依赖锁定功能。但对于大多数情况,pip freeze > requirements.txt 是一个快速生成项目依赖列表的有效方法。

2. 从本地路径安装

你可以从本地文件系统上的一个目录安装包,这个目录通常包含 setup.pypyproject.toml 文件(这是项目的构建配置)。

bash
pip install /path/to/your/package/directory

如果你的包是一个源代码归档文件(如 .tar.gz, .zip),也可以直接指定文件路径:

bash
pip install /path/to/your/package.tar.gz

3. 从版本控制系统 (VCS) 安装

pip 可以直接从 Git, Subversion, Mercurial 等版本控制系统的仓库安装包。这对于安装仍在开发中、尚未发布到 PyPI 的库非常有用。

语法通常是:

bash
pip install vcs+protocol://repo_url/#egg=<package_name>

  • vcs: 版本控制系统类型 (git, svn, hg)
  • protocol: 协议 (http, https, ssh, git, svn)
  • repo_url: 仓库地址
  • #egg=<package_name>: 项目的 egg 名称(即包名),有时可以省略,但最好加上以确保 pip 正确识别项目。

示例:

  • 从 GitHub 的 master 分支安装一个 Git 仓库:

    bash
    pip install git+https://github.com/yourusername/yourpackage.git

  • 安装 Git 仓库的某个分支:

    bash
    pip install git+https://github.com/yourusername/yourpackage.git@develop

    (@develop 指的是分支名)

  • 安装 Git 仓库的某个 Tag:

    bash
    pip install git+https://github.com/yourusername/[email protected]

    (@v1.2.3 指的是 Tag 名)

  • 安装 Git 仓库的某个特定的 Commit:

    bash
    pip install git+https://github.com/yourusername/yourpackage.git@<commit_hash>

4. 从 URL 安装

如果包提供了一个可直接下载的 URL(如 .tar.gz.whl 文件),你可以直接使用 URL 进行安装:

bash
pip install https://example.com/packages/mypackage-1.0.tar.gz

5. 从 Wheel 文件安装 (.whl)

Wheel (轮子) 是一种预编译的 Python 分发包格式(以 .whl 结尾),它可以跳过编译步骤,从而加快安装速度,尤其对于包含C扩展的包(如 NumPy, pandas)非常有用。PyPI 上很多包都提供了 wheel 文件。

当你执行 pip install package_name 时,如果 PyPI 上有与你的系统和 Python 版本兼容的 wheel 文件,pip 会优先下载并安装 wheel 文件。

你也可以手动下载 .whl 文件,然后从本地路径安装:

bash
pip install /path/to/your/package.whl

第四部分:pip install 的高级选项与技巧

除了基本的安装来源和版本控制,pip install 还有许多有用的选项来微调安装过程。

1. 可编辑模式安装 (-e--editable)

当你正在开发一个 Python 包时,你希望能够在修改源代码后立即看到效果,而无需每次修改都重新安装。--editable 模式就是为此设计的。

“`bash
pip install –editable /path/to/your/package/directory

或者在项目根目录执行

pip install -e .
“`

在可编辑模式下安装,pip 不会将你的包复制到 site-packages 目录,而是在 site-packages 中创建一个指向你项目源代码目录的链接。这样,你在项目目录中修改的代码会立即反映在使用该包的环境中。这对于本地开发和测试非常方便。

2. 离线安装与缓存

pip 会缓存已下载的包文件,以便在将来需要重新安装相同版本时无需再次下载。缓存位置因操作系统而异(通常在用户主目录下的 .cache/pip 或类似位置)。

  • 不使用缓存进行安装 (--no-cache-dir):

    bash
    pip install --no-cache-dir <package_name>

    这在调试下载问题时可能有用。

  • 仅使用缓存,不允许网络下载 (--only-binary :all: --find-links /path/to/cached/wheels):

    这是一个更高级的离线安装场景。你可以提前在一个联网环境中下载所有需要的 wheel 文件到某个目录,然后将这些文件和 requirements.txt 一起转移到离线环境。在离线环境中,使用 pip install --no-index --find-links /path/to/cached/wheels -r requirements.txt 来强制 pip 只在指定的本地目录中查找包。
    * --no-index: 忽略 PyPI。
    * --find-links /path/to/cached/wheels: 在指定目录中查找本地包文件。

3. 指定镜像源 (-i--index-url)

默认情况下,pip 从 PyPI (pypi.org) 下载包。但在某些情况下,你可能希望使用其他的包索引,例如国内的镜像源(如清华、豆瓣、阿里等)来加速下载,或者公司内部的私有仓库。

bash
pip install -i <index_url> <package_name>

示例:使用清华大学的 PyPI 镜像安装 requests

bash
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

同时使用多个索引源 (--extra-index-url)

你可以指定一个主要的索引源,同时允许 pip 在其他次要索引源中查找。这在需要从私有仓库安装包,同时仍能从 PyPI 安装公共包时非常有用。pip 会优先在主索引源查找,找不到再去额外索引源查找。

bash
pip install --index-url <main_index_url> --extra-index-url <extra_index_url> <package_name>

示例:从私有仓库安装 myprivatepackage,并允许从 PyPI 安装其依赖

bash
pip install --index-url https://myprivate.repo.com/simple --extra-index-url https://pypi.org/simple myprivatepackage

信任主机 (--trusted-host)

当你使用非 HTTPS 的自定义镜像源时,可能会遇到 SSL 证书错误。为了避免这些错误(请注意安全风险),你可以将该主机添加到信任列表中:

bash
pip install -i http://my.insecure.repo.com/simple --trusted-host my.insecure.repo.com <package_name>

警告: 仅在你确定该主机是安全的、并且理解潜在的安全风险时才使用 --trusted-host。优先使用 HTTPS 的源。

4. 忽略依赖 (--no-deps)

在极少数情况下,你可能希望只安装指定的包,而不安装它的任何依赖项。

bash
pip install --no-deps <package_name>

警告: 使用 --no-deps 可能会导致安装的包无法正常工作,因为它可能依赖于环境中不存在的其他包。谨慎使用此选项。

5. 强制重新安装 (--force-reinstall)

如果某个包的安装可能损坏或出现问题,你可以强制 pip 重新下载并安装它,即使该版本已经存在。

bash
pip install --force-reinstall <package_name>

6. 安装特定系统架构和 Python 版本的 Wheel (--platform, --python-version, --implementation, --abi)

这些选项通常用于构建和分发工具,或者在交叉编译场景下。它们允许你指定目标环境的详细信息,以便 pip 下载并安装正确的预编译 wheel 文件。对于日常使用,pip 通常会根据当前环境自动选择合适的 wheel。

例如,为一个特定的 Python 版本(如 cp39)和操作系统/架构(如 manylinux_2_17_x86_64)下载 wheel:

bash
pip download --platform manylinux_2_17_x86_64 --python-version cp39 --only-binary=:all: somepackage

然后可以使用 --find-links 结合 --no-index 在目标环境中离线安装。

第五部分:依赖管理与 pip install

理解依赖关系是有效使用 pip install 的关键。当安装一个包时,pip 会读取其元数据(通常在 setup.py, setup.cfg, 或 pyproject.toml 中指定),找出它所依赖的其他包及其版本要求。pip 会尝试找到一套满足所有已安装包和新安装包依赖要求的版本组合。

依赖冲突:

最常见的依赖问题是当两个不同的包 A 和 B 都依赖于同一个库 C,但它们要求的 C 的版本范围不兼容时。例如,A 需要 C>=1.0,<2.0,而 B 需要 C>=2.0,<3.0。在这种情况下,pip 可能无法找到一个同时满足 A 和 B 的 C 版本,从而导致安装失败。

标准的 pip install -r requirements.txt 在遇到冲突时可能会失败或安装了某个版本,但不能保证所有顶级依赖都能正常工作。

依赖锁定 (pip freeze):

如前所述,pip freeze > requirements.txt 创建的文件包含了当前环境中 所有 包的精确版本。这通常用于记录一个已知工作状态的环境配置,以便在其他地方重建完全相同的环境。这种方法是将依赖“锁定”到特定版本,从而提高了环境的可复现性。

更高级的依赖管理工具:

对于复杂的项目,仅仅使用 pip install -rpip freeze 可能不够灵活或强大。一些第三方工具提供了更完善的依赖管理解决方案,包括:

  • pip-tools: 通过 pip-compilepip-sync 命令,它可以从一个抽象的依赖列表(如 requirements.in)生成精确锁定的依赖列表(requirements.txt),并确保环境与锁定文件严格同步。
  • Poetry: 一个集依赖管理、打包、发布于一体的工具,使用 pyproject.toml 文件。它提供了更强大的依赖解析和锁定功能。
  • Rye / PDM: 现代的 Python 项目管理工具,也基于 pyproject.toml,提供类似 Poetry 的功能。

虽然这些工具超出了 pip install 本身的范围,但理解它们的存在以及它们解决的问题,有助于你更好地管理项目依赖。然而,对于许多项目,尤其是初学者,熟练使用 pip install -rpip freeze 已经足够应对大部分情况。

第六部分:与虚拟环境结合使用

在前言中提到了“依赖地狱”问题,而虚拟环境是解决这个问题的核心方法。强烈建议在进行任何 Python 项目开发时都使用虚拟环境。

什么是虚拟环境?

虚拟环境是一个独立的 Python 运行环境。它有自己的 Python 解释器、pip 以及自己的 site-packages 目录。在虚拟环境中安装包时,它们只会安装到这个虚拟环境的 site-packages 中,不会影响系统全局的 Python 环境,也不会影响其他虚拟环境。

这样,每个项目都可以拥有自己独立的、互不干扰的依赖集合。

如何创建和激活虚拟环境?

Python 3.3+ 内置了 venv 模块:

“`bash

创建虚拟环境 (会在当前目录创建一个名为 myenv 的文件夹)

python -m venv myenv

激活虚拟环境

Windows:

.\myenv\Scripts\activate

macOS/Linux:

source myenv/bin/activate
“`

激活虚拟环境后,你会发现终端提示符前面通常会显示虚拟环境的名称(例如 (myenv))。此时,你使用的 python 命令和 pip 命令都是来自这个虚拟环境。

在虚拟环境中安装包:

激活虚拟环境后,你就可以像往常一样使用 pip install 命令了:

bash
(myenv) pip install requests django

这些包只会安装到 myenv 这个虚拟环境里。当你退出虚拟环境(使用 deactivate 命令)后,这些包就不可用了。

使用虚拟环境的好处与 pip install 的关系:

  • 隔离性: 彻底解决了不同项目依赖版本冲突的问题。
  • 清洁性: 系统全局 Python 环境保持干净,避免被各种项目依赖污染。
  • 可移植性: 通过 pip freeze > requirements.txt 记录虚拟环境中的精确依赖,然后在其他环境中轻松重建。
  • 权限问题: 在虚拟环境中,你通常拥有完全的权限,无需 sudo--user 就可以安装包。

总结: pip install 命令本身的使用方法在虚拟环境内外是相同的,但它操作的目标位置是不同的。在虚拟环境中执行 pip install 是标准的、推荐的做法。

第七部分:常见问题与故障排除

在使用 pip install 时,可能会遇到一些常见问题。了解如何排查它们可以节省大量时间。

  1. pip 不是内部或外部命令/找不到命令:

    • 原因: Python 或 pip 的安装目录没有添加到系统的 PATH 环境变量中。
    • 解决方案:
      • 确保你正确安装了 Python。
      • 在安装 Python 时,勾选 “Add Python to PATH”。
      • 手动将 Python Scripts 目录(其中包含 pip 的可执行文件,例如 C:\Python39\Scripts/usr/local/bin)添加到系统的 PATH 环境变量中。
      • 作为替代,可以使用 python -m pip install ... 的形式运行 pip,这可以绕过 PATH 问题,并确保你使用的是当前 python 命令对应的 pip。
  2. 权限错误 (Permission denied):

    • 原因: 尝试在没有足够权限的系统目录中安装包(例如,全局安装到 /usr/lib/pythonX.Y/site-packages)。
    • 解决方案:
      • 强烈推荐: 使用虚拟环境。
      • 如果必须安装到用户目录:使用 pip install --user <package_name>
      • 如果确实需要全局安装且你有权限:在 Linux/macOS 上使用 sudo pip install ... (但极不推荐这样做,尤其是在系统 Python 上)。
  3. 编译错误 (例如 Microsoft Visual C++ 14.0 or greater is required):

    • 原因: 尝试安装的包包含需要编译的 C/C++/Fortran 等扩展模块,但你的系统缺少必要的编译工具链。这在安装一些科学计算库(如 NumPy, scipy)时尤其常见,如果找不到对应的 wheel 文件。
    • 解决方案:
      • 优先确保 pip 版本最新,它会尽量下载预编译的 wheel 文件。
      • 对于 Windows:安装 Build Tools for Visual Studio。
      • 对于 macOS:安装 Xcode Command Line Tools (xcode-select --install)。
      • 对于 Linux:安装构建 essentials,如 build-essential (Debian/Ubuntu) 或 Development Tools (Fedora/CentOS/RHEL)。
      • 查找是否有所需包的预编译 wheel 文件可供下载。
  4. 网络问题 (超时、连接错误、SSL 错误):

    • 原因: 防火墙、代理设置、网络不稳定、或者目标 PyPI 服务器有问题。SSL 错误可能是因为证书验证失败。
    • 解决方案:
      • 检查网络连接。
      • 如果你在公司网络中,可能需要配置代理 (pip --proxy http://[user:passwd@]proxy.server:port install ...)。
      • 尝试使用国内镜像源 (-i 选项)。
      • 对于 SSL 错误且使用自定义源:检查源地址是否正确,如果确定安全可以考虑使用 --trusted-host (但需注意风险)。
      • 尝试使用 --retries 参数增加重试次数。
  5. 依赖冲突 (Dependency conflict):

    • 原因: 尝试安装的包或其依赖与其他已安装的包有版本冲突。
    • 解决方案:
      • 仔细阅读 pip 的错误信息,它通常会指出哪些包之间存在冲突。
      • 检查你的 requirements.txt 文件,看是否存在相互冲突的版本要求。
      • 考虑升级或降级冲突的包,尝试找到一个兼容的版本组合。
      • 对于复杂的冲突,可能需要更高级的依赖管理工具(如 pip-tools, Poetry)。
  6. 缓存问题:

    • 原因: 有时缓存的文件可能损坏或过时。
    • 解决方案: 使用 --no-cache-dir 强制 pip 重新下载。

第八部分:最佳实践

为了充分发挥 pip install 的威力并保持项目和环境的健康,遵循一些最佳实践至关重要:

  1. 总是使用虚拟环境: 这是最重要的规则。为每个项目创建一个独立的虚拟环境,可以避免依赖冲突,保持系统环境清洁。
  2. 使用 requirements.txt 管理项目依赖: 将项目所需的所有包及其版本信息记录在 requirements.txt 文件中。
  3. 锁定依赖版本 (pip freeze): 在开发环境中,当你确定了一组工作正常的依赖版本后,使用 pip freeze > requirements.txt 生成精确的依赖列表,以便在生产环境、CI/CD 或其他开发者的机器上重建相同的环境。
  4. 保持 pip 自身最新: 定期运行 python -m pip install --upgrade pip 以获得最新的功能和bug修复。
  5. 定期审查和更新依赖: 虽然锁定依赖保证了可复现性,但也可能导致使用过时、存在安全漏洞或缺乏新功能的库。定期(例如,每隔几个月)尝试更新项目的关键依赖,并测试项目是否仍然正常工作。可以使用 pip list --outdated 查看哪些包有新版本。
  6. 谨慎使用全局安装和 --user 优先在虚拟环境中安装。全局安装只应保留给那些你希望在系统范围内可用的工具类库(而且很多这类工具现在也推荐安装到用户目录或通过专门的安装器)。
  7. 了解你的索引源: 清楚你的 pip 是从哪里下载包的(PyPI, 镜像源, 私有仓库)。

结论

pip install 作为 Python 的包安装神器,是每一个 Python 开发者必须掌握的工具。从简单的 pip install package_name 到复杂的从 VCS 或本地路径安装,再到结合虚拟环境和 requirements.txt 进行依赖管理,pip install 提供了强大而灵活的功能。

通过本文的详细介绍,你应该对 pip install 的各种用法、选项和背后的原理有了更深入的理解。记住,熟练使用 pip install,并结合虚拟环境和依赖管理实践,将极大地提升你的开发效率,并帮助你构建更健壮、可维护的 Python 项目。

持续学习和探索是提升技能的关键。随着 Python 生态系统的发展,新的打包和依赖管理工具也在不断涌现(例如 pyproject.toml 的普及,Poetry, Rye, PDM 等)。但 pip install 作为核心命令,其重要性在可预见的未来仍将不可撼动。掌握它,你已经迈出了成为一名高效 Python 开发者坚实的一步。

滚动至顶部