我是 Linux 操作系统的新手,目前正在学习使用 Ubuntu。我来到了构建虚拟环境的部分。我读到我应该使用 pipenv 而不是 venv。
我使用虚拟环境的理想目标是创建一个隔离的地方,满足我运行程序的所有需求(不再需要该程序后可以轻松清除),但我学到的是使用 pipenv 时,可以使用 pipenv 安装的 python 包与不能使用 pipenv 安装的其他包(如 postgreSQL 或 git)之间存在差异。
据我所知,postgreSQL 和 git 等软件包将安装在全局(系统范围)中,而 python 软件包将安装在 pipenv 环境中。由于我的理想目标是创建一个包含所有软件包的隔离位置来运行某些程序,有没有办法实现这一点?
答案1
我认为 Python 的虚拟环境(使用 venv 或 pipenv 进行管理)只是为了将一个 Python 环境与另一个 Python 环境隔离开来,也就是说,例如,确保您的 Python 应用程序使用它所需的软件包的精确版本运行,并且不会与另一个应用程序的要求冲突。
这与非 Python 系统工具无关。因此,如果您想使用自己的 git 和 postgreSQL 等版本构建自己的实验环境,最好的选择是创建虚拟机 (VM) 或容器。如果您对两者都不熟悉,那么 VM 可能更容易理解和使用(就像拥有一台专用于实验的 PC 一样)。
话虽如此,在 Unix 系统中,在同一台机器上管理各种版本的工具(如 git)当然是可行的。如果您是开发人员,您可能希望在本地安装它们(例如在 下~/local/tool-version
),并创建安装 shell 脚本将这些工具添加到PATH
,这样 shell 就会找到它们,而不是系统工具。
例如,您可以创建一个文件,例如my-git.sh
#!/bin/bash
PATH=~/local/git-1.2.3/bin:$PATH
export PATH
然后,当你想使用该工具时,你可以在终端中输入
$ source my-git.sh
此后,当您下次在 shell 中调用 git 时,它将使用二进制文件~/local/git-1.2.3/bin
(假设那里有一个)而不是系统二进制文件。
然而,这样的设置更加复杂,并且不提供完全隔离(例如,共享库仍然是系统中安装的库)
希望这可以帮助。