使用 pipenv 设置 Python 开发环境 其他有用的 pipenv 命令

2025-06-08

使用 pipenv 设置 Python 开发环境

其他有用的 pipenv 命令

什么是 pipenv?

照片来源:Make a Mem.org

根据官方文档,“ Pipenv是一个旨在将所有打包工具(bundler、composer、npm、cargo、yarn 等)的最佳功能引入 Python 世界的工具。” “它将 Pipfile、pip 和 virtualenv 整合到一个命令中。”

这是什么意思?

照片来源:Make a Mem.org

首先,我们需要了解什么是包管理器。包管理器是一种帮助管理(安装、卸载和升级)软件包或模块的工具。如果您之前使用过 Node.js,那么您一定用过 NPM(Node 包管理器),它用于管理您在 Node 上使用的 JavaScript 模块。pipenv 的作用是像 NPM 一样,帮助您管理用于构建项目的 Python 包。

Pipenv 的工作原理是创建一个虚拟环境,用于隔离你为项目安装的不同软件包。在 pipenv 之前,还有其他 Python 包管理器用于创建虚拟环境,例如 virtualenv,但它们也存在各自的问题。

为什么是虚拟环境?

你好!我叫 Pip。我是 Python 的标准包管理器。我可以帮你安装和卸载 Python 包。不过,我会在你的系统环境的全局范围内安装它们。

为什么这是一个问题?

想象一下,你的电脑上有大约 5 个 Django 项目,每个项目都使用各自版本的 Django,而每个版本的 Django 又各自依赖不同的版本。如果你真的跟着我一起想象,你很快就会意识到这些依赖项之间必然存在冲突。也许,某个依赖项的较低版本会被覆盖,导致你的某个应用程序崩溃,而这可不是你想要的。

一个简单的解决方案是为每个项目创建一个隔离层,使它们彼此之间互不干扰,从而避免 Django 内战。这时,虚拟环境就派上用场了。
在同一个项目的软件开发团队中,共享一个文件来描述运行应用程序所需的所有软件包,这是一种常见的做法。Pip 使用一个 requirement.txt 文件。然而,这样做也带来了一些问题。

requirements.txt 文件不会记录正在安装的软件包的具体版本。这可能会导致将来出现问题,因为运行“pip install”会获取软件包的最新版本,这可能会导致应用程序崩溃。虽然可以通过固定(手动指定)版本来解决此问题,但这不适用于软件包的依赖项,因为它们记录在 requirements.txt 文件中。

让我更清楚地解释一下——假设你用 pip 安装了两个软件包(p1 v.0.01 和 p2 v.0.02)。这两个软件包各自有依赖关系。只有上述软件包会记录在 requirements.txt 文件中。因此,即使它们没有升级到最新版本,它们的依赖关系也不会被固定,因此可能会被升级,从而导致应用程序崩溃。

为什么使用 pipenv

  • Pipenv 通过为运行每个单独的项目创建虚拟环境来解决上述问题,因此它们的包和依赖项不会发生冲突。

  • 其次,pipenv 使用 pipfile 和 pipfile.lock 文件管理已安装软件包及其依赖项的记录。pipfile 跟踪所有已安装的软件包,而 pipfile.lock 文件跟踪它们的依赖项。pipenv 的有趣之处在于,即使尚未使用 pipenv,也可以轻松生成 requirements.txt 文件。

  • 过去,我们有其他用于创建虚拟环境的软件包来帮助解决这个问题,其中之一就是 virtualenv 软件包,但它的设置和使用有点繁琐。Pipenv 可以让你更轻松地管理软件包。它结合了 pip 和 virtualenv 来为你的项目创建虚拟环境。

Image Source: https://docs.pipenv.org/en/latest/

闲话少叙,我们开始吧。 图片来源:imgflip

设置 pipenv

为了演示 pipenv 的工作原理,我们将搭建一个基本的 Django 项目。但为此,我们需要安装 python 和 pip。

安装python3

我们将安装 Python 的最新版本 python3。最简单的方法是访问https://www.python.org/downloads/,下载适用于您操作系统的软件包并安装。本文将使用 Mac OSX 环境。您也可以通过终端安装 Python,步骤如下:

安装过程完成后,您可以输入以下命令which brew查看 Homebrew 的安装位置。Homebrew 是 Mac 的软件包管理器,您的输出应该类似于以下内容:

  • 安装 python 3。要安装 python3,请运行 brew install python3

在我的电脑上显示我已经安装了python3,还显示了我安装的python3的版本。

要验证是否已安装 python3,请在终端上输入:which python3

当您使用 homebrew 安装 python3 时,它会自动安装 pip3您可以通过运行或来
验证 pip3 是否已安装which pip3pip3 --version

安装 pipenv

要安装 pipenv,请运行 Pip3 install pipenv

如果您查看屏幕截图中的输出,您会看到一些地方显示“要求已满足” - 这是因为我已经安装了 virtualenv,并且记得我告诉过您 pipenv 可以与 virtualenv 和 pip 一起使用。

我们目前处于什么样的环境?

当我运行“pip3 freeze”时,你会看到它显示了我当前环境(即全局环境)中所有的包。当我们在虚拟环境中运行相同的命令,并且没有安装任何包时,你很快就会看到区别。

启动虚拟环境

要创建我们的虚拟环境,我们必须为我们的项目创建一个目录并在该目录中运行命令。

查看上面的屏幕截图,您会发现我运行了以下命令:

  • mkdir project_1- 创建一个新的项目目录
  • cd project_1- 将我当前的工作目录更改为我刚刚创建的新目录
  • pipenv shell- 创建一个新的虚拟环境,您会注意到该环境已成功创建。

验证我们所处的环境

要验证我们是否已更改环境,请运行pip3 freeze again 与之前的输出不同,您会注意到没有结果。这是因为我们不再处于全局范围内,并且在这个新环境中,我们尚未安装任何应用程序。此外,如果您检查项目目录,您会注意到已创建了一个新的 Pipfile。


pipfile 使用一种名为 TOML(Tom's Obvious Minimal Language)的配置语言编写。它旨在编写易于阅读的配置文件。我们不会费心阅读前四行。

  • 第 6 行列出了仅用于开发目的的软件包。这些软件包不会安装在生产环境中,只会安装在测试和开发环境中。
  • 第 8 行表示将列出基于生产的软件包的部分
  • 第 11 行表示所使用或所需的 python 版本。
  • 请注意,您可以手动将包添加到此文件,然后pipenv install在终端上运行以安装它们。

现在,让我们安装一个新的包,看看会发生什么。我们将安装 Django

你会注意到我没有指定要安装的 Django 版本。你还会注意到,它搜索了 Pipfile.lock 文件,并在找不到时创建了一个。

在我们的代码编辑器中,您还会发现 Django 已添加到软件包列表中。版本号用星号指定。这意味着,每当有人运行 pipenv install 时,它都会安装最新版本。我们也可以将星号更改为所需的版本。您还会注意到生成了一个 piplefile.lock 文件。该文件跟踪所有已安装的软件包及其依赖项。

我们还可以做一件事,再次运行 pip3 freeze 命令。你会注意到,这里只列出了 pipfile.lock 文件中列出的包。

检查当前环境

您可以键入以下命令来验证您所处的环境:

  • Python- 这应该会启动 python shell,如下图所示。
  • Import sys- 导入 sys 模块
  • Sys.excutable- 这应该打印出你正在运行的当前 Python 环境的路径
  • 键入exit()- 退出 python shell 键入exit- 退出环境。
  • 重复前三个命令,你会发现输出有所不同。这是因为目前 Mac 已经预装了 Python 2.7。由于你不再处于你创建的虚拟环境中,所以输出会有所不同。你也可以运行 pip3 freeze

测试我们的 Django 安装

  • 确保你位于创建环境的目录中
  • 输入pipenv shell- 激活环境
  • 运行django-admin startproject bookstore .- 末尾的句点 (.) 表示应该将其安装在当前目录中,并将项目命名为 bookstore。命令执行后,您可能看不到任何输出。
  • 在终端中输入ls,你会看到一个名为 bookstore 的新目录已创建。你还会注意到另一个名为 manage.py 的文件。

运行 Django 应用

要运行 Django 应用程序,请在终端上输入以下命令:

  • python manage.py runserver
  • 复制终端中突出显示的 URL,将其粘贴到浏览器地址栏上,然后按 Enter 键运行它。

现在你有了你的 Django 应用程序

requirements.txt 文件

如前所述,requirements.txt 文件用于记录使用 pip 时已安装的软件包。如果您需要与使用 pip 而不是 pipenv 的人合作,您可以与他们共享一个 requirements.txt 文件:

创建 requirements.txt 文件

  • 运行pipenv lock -r命令显示已安装包的列表。
  • 复制上述命令的输出,粘贴到 requirements.txt 文件中,并将其推送到你的项目仓库。其他开发人员只需运行pip install,即可安装所有软件包及其依赖项。

生成你自己的 pipfile.lock

如果你有 requirements.txt 文件,你可以生成 pipfile.lock

  • 将 requirements.txt 文件放入你的项目目录中
  • 跑步pipenv lock
  • 运行pipenv install --ignore-pipfile- 这将使用 pipfile.lock 安装所有包及其依赖项,并忽略 pipfile。

其他有用的 pipenv 命令

列出当前环境中安装的包

  • Pipenv 锁 -r

  • Pipenv uninstall package 卸载包

  • 安装开发环境的软件包

  • 检查安全漏洞
    要检查软件包中的漏洞,您可以运行pipenv check

  • 查看包依赖关系图
    您可以通过运行以下命令查看项目的所有包及其依赖关系:pipenv graph

  • 环境变量
    您还可以将环境变量添加到您的项目中

    • 创建 .env 文件
    • 为其添加环境变量
    • PASSWORD='我的秘密密码'
    • pipenv run python您将看到环境变量正在加载 Import os os.environ['PASSWORD']
  • 删除虚拟环境

    您也可以移除该环境。请注意,这不会删除项目中创建的资源或文件。它只是停用该环境。

希望你喜欢我的教程。请留下你的反馈,以便我更好地分享。记得点赞和分享,这样其他人也能从中学习。

鏂囩珷鏉ユ簮锛�https://dev.to/davidshare/setting-up-a-python-development-environment-with-pipenv-3lfj
PREV
您最喜欢的 VueJS 库有哪些?
NEXT
盲打——开发人员最重要的技能,却鲜有人提及