Pip 和 Virtualenv 的更多配置

优质
小牛编辑
137浏览
2023-12-01

让 pip 默认强制全局使用虚拟环境

现在应该很清楚了,使用虚拟环境是个保持开发环境干净和分隔不同项目要求的最佳实践。

当同时在多个不同的项目上工作,切换项目时经常会忘记激活对应的虚拟环境。 其结果就是,虽然本意是要安装在特定项目的虚拟环境中,但是仍会错误的在全局范围内安装包。 时间越久,就会导致混乱的全局包列表。

为了确保当使用 pip install 时是将包安装在激活的虚拟环境中,考虑在 ~/.bashrc 文件中加上以下一行:

export PIP_REQUIRE_VIRTUALENV=true

保存完这个修改以后,请使用命令 source ~/.bashrc 来应用变更。在随后的操作中,如果您不在一个虚拟环境中,pip 就不会让您安装包。如果您试着在虚拟环境外使用 pip installpip 将会细心地提醒您需要一个激活的虚拟环境来安装包。

$ pip install requests
Could not find an activated virtualenv (required).

您也可以通过编辑 pip.confpip.ini 来做相同的配置。在 Unix 和 Mac OS X 操作系统下 pip.conf 能够在这里找到:

$HOME/.pip/pip.conf

类似的, pip.ini 被 Windows 操作系统使用,能够在这里找到:

%HOME%\pip\pip.ini

如果在这些位置中并没有 pip.confpip.ini,请在对应的操作系统中创建一个正确名字的新文件即可。

有配置文件的情况下,只需将下行添加到 [global] 区块的设置下, 即可开启强制激活虚拟环境安装策略:

require-virtualenv = true

没有配置文件的情况下,需要创建一个新的,然后把下面几行添加到这个新文件中:

[global]
require-virtualenv = true

当然,有时我们也需要在全局范围内安装一些包(通常是在多个项目中都要一直用到的包), 可以在 ~/.bashrc 中加入以下内容来完成:

gpip() {
    PIP_REQUIRE_VIRTUALENV="" pip "$@"
}

在保存完这个修改以及使用 source ~/.bashrc 应用变更后,从现在起可以通过运行 gpip install 来在全局范围内安装包。 您可以把函数名改成任何你喜欢的,只要记住当你想要全局范围内安装包时,使用那个名字即可。

下载包的缓存

每个开发者都有自己偏好的库,当工作在大量不同的项目上时,这些项目之间肯定有一些重叠的库。 比如说,你可能在多个项目中使用了 requests

在开始一个新项目时,重新下载相同的 包/库 是没有必要的。幸运的是, 自从 6.0 版本开始,pip 提供 默认缓存机制 ,我们无需任何配置。

当使用更老的版本时,可以按照下面的方式来配置 pip,来开启下载包缓存模式。

在 UNIX 系统中,可以添加以下到 .bashrc.bash_profile 文件中:

export PIP_DOWNLOAD_CACHE=$HOME/.pip/cache

可以设置为随意有写权限的路径。修改完成后请 source.bashrc (或者 .bash_profile )文件应用变更。

通过配置不同系统性 pip.confpip.ini 文件也能达到相同目的。Windows 下,请将下面一行添加到 pip.ini 文件中的 [global] 区块下:

download-cache = %HOME%\pip\cache

类似的,UNIX 下请将下面一行添加到 pip.conf 文件中的 [global] 区块下:

download-cache = $HOME/.pip/cache

虽然存储缓存的路径可以随意设置,但是推荐存放在 pip.conf 或者 pip.ini 文件相同的目录下。如果你拿不定主意,请直接使用这里推荐的路径 .pip/cache 即可。