Kir*_*ies 4 python virtualenv requirements.txt
所以我在谷歌搜索一个 pip 需要 sudo 权限的事件,我遇到了以下两个线程 运行“sudo pip”有什么风险? 并且 它是可接受的安全运行PIP在sudo下安装?
第一个线程讨论了使用 pip 运行未知 .py 文件的安全风险(有道理),但从第二个线程开始,我几乎得到的印象是存在一个全局和本地 python 安装,您不应该混淆。我想您可以为所有用户进行全局安装,然后为每个用户添加本地包的附加路径,这是有道理的,但这是真的吗?(这也是有道理的,因为 ubuntu(我正在使用)依赖于某些 python 包,所以有一个全局根保护 python 目录可以保护这些包)。但是,如果这是真的,我找不到两个单独的目录。我试过
import sys
print(sys.path)
Run Code Online (Sandbox Code Playgroud)
使用 sudo 和不使用 sudo,我得到了完全相同的目录。
无论如何,我想我会转向 pip virtualenv,但在那种情况下,我想知道,如果我不小心忘记激活环境并在外面运行一个异国情调的 requirements.txt 会发生什么?这不会破坏我的标准用户目录,我正在努力保持清洁(如果是这样,那是可逆的吗?我只是在想,它只是忘记输入一个突击队,然后你的 python 安装就搞砸了.)
我确实建议始终将 virtualenv 用于特定应用程序的要求。您作为多个项目的开发人员使用的工具(例如ipdb)可以在系统上全局安装。
请注意,所有 pip 包都是开源的,因此您可以确信著名的 pip 包可能没有恶意代码,但当然可能包含安全漏洞。
为了防止在 virtualenv 之外意外安装 pip 包,您可以将其添加到您的.bashrc:
export PIP_REQUIRE_VIRTUALENV=true
Run Code Online (Sandbox Code Playgroud)
当你pip install something在 virtualenv 之外运行时,它会显示一条错误消息:
Could not find an activated virtualenv (required).
Run Code Online (Sandbox Code Playgroud)
如果你仍然希望能够在 virtualenv 之外安装 pip 包,你可以.bashrc像这样添加一个函数:
syspip() {
PIP_REQUIRE_VIRTUALENV="" sudo pip "$@"
}
Run Code Online (Sandbox Code Playgroud)
然后你可以运行syspip install something在你的系统上全局安装一些东西。
至于您正在运行的脚本:
import sys
print(sys.path)
Run Code Online (Sandbox Code Playgroud)
是否使用 sudo 运行它并不重要,sudo 只更改您正在执行命令的用户权限,对于这个脚本来说无关紧要。