当前位置: 首页 > 面试题库 >

为什么没有Python和pip的sudo不能做一些事情?

慕容聪
2023-03-14
问题内容

当我使用pip时,没有sudo通常不会起作用。我经常看到人们在不使用sudo的情况下使用pip,所以我在做什么错呢?

我读到不建议使用sudo安装pip软件包。我知道virtualenv可以不用sudo使用pip,但是要安装,virtualenv我必须先使用sudo。

当我尝试不使用sudo安装pip时,我得到:

PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.4/dist-packages/pip'

尝试通过以下方式安装flask时pip3 install flask

PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.4/dist-packages/werkzeug'

问题答案:

sudo在Unix / Linux系统中用于在另一个用户中使用
权限(例如,写入某些目录的能力)来执行任务。当您不指定要模拟的用户时(例如在运行时)

sudo pip install flask

您正在尝试以系统管理员的身份运行命令,这root在许多环境中都是众所周知的。系统将要求您输入管理员密码(如果您已授予用户admin特权,则可以是您自己的管理员密码),然后指定的命令
将以该用户身份 运行 ,这
意味着它实际上具有对每个文件和目录的读/写访问权限在系统上(有一些例外,但是它们大多是极端情况,在这里不是很重要)。这意味着在使用时,您需要
格外小心sudo,因为只有单个空格的错误实际上会使事情搞砸了:比较

sudo rm -rf /usr/local/lib/python3.4/dist-packages/numpy*

sudo rm -rf /usr /local/lib/python3.4/dist-packages/numpy*

看到/usr和之间有空格local/吗?您刚刚开始删除整个/usr文件夹,其中包含系统上重要文件和程序的很大一部分。希望你有备份!现在,这并不意味着您需要被吓死了sudo,但是您
确实 需要 对此 有健康的尊重。

Python安装通常是系统级别的(是的,我知道有例外),这意味着您需要使用sudo它们进行修改,例如,使用安装第三方组件时pip。如果你跑

ls -l /usr/local/lib/python3.4

您会看到类似的内容

drwxrwsr-x 125 root 4096 Nov  3 00:40 dist-packages

显示您要安装到的目录pip归拥有root,因此必须使用sudo

现在,有两种解决方法。如果你是舒服,并且不介意修改系统的全局包,继续使用sudopip(事实上,你可能需要使用sudo -H ...,如果你在开始你的home目录得到黄色一点消息有关权限)。您的所有模块都将安装至/usr/local/lib/python3.4/dist- packages系统上的所有用户,并且可供所有用户使用。

第二个选项是使用pip的--user选项,它将lib/python3.4/site- packages在您的主目录(~)中创建一个层次结构,并将所有已安装的模块以及脚本~/bin(应添加到其中)存储在该目录中$PATH。此方法的优点是您
不需要 需要使用sudo,这样你就不会在需要其他程序的特定版本意外覆盖与系统相关模块运行。缺点是安装的模块只是提供给你,让你 可以
,如果遇到问题,例如,您的网络服务器试图运行Flask本身,无法读取源文件,但是,一点点配置文件编辑都无法解决,这是我为大多数用户推荐解决方案

第三种选择是使用虚拟环境,例如virtualenv。这将在您选择的位置创建一个自定义Python安装,并具有
单独的 python可执行文件和site-packages层次结构(存在有关是否要链接到或使用系统dist- packages存储库的选项)。您可以pip install将程序包直接打包到virtualenv中,并根据您的内心需求创建尽可能多的环境,例如,每个环境的各种依赖项版本略有不同,因此您可以更强大地测试程序。您可以打开和关闭虚拟环境,例如,您可以让几个在终端的不同选项卡中运行,例如,并行测试。这是我的第二建议,因为在激活和使用环境方面涉及(略)更多的工作,并且如果您不太擅长命名环境,您可能会感到困惑。缺点包括缺乏系统范围的可用性(如第二种选择),以及需要在使用前手动激活虚拟环境的事实。

因此,请看一下这些选项,然后看看哪种最适合您的系统和您的特定情况。祝好运!



 类似资料:
  • 问题内容: 有时,我会遇到一些评论或回应,这些评论或回应都强调说在“错误”或“不良”情况下运行,但在某些情况下(包括我设置了一堆工具的方式),它可能更简单,甚至有必要这样运行。 什么是与运行相关的风险下? 请注意,这个问题与这个问题不同,尽管有标题,但没有提供有关风险的信息。这也不是关于如何避免使用的问题,而是关于为什么要使用的问题。 问题答案: 当你使用时,你会使用sudo。换句话说,你可以从互

  • 问题内容: 尝试使用pip安装virtualenv之后 我收到一个权限被拒绝的错误 所以我用sudo安装virtualenv 但是随后出现警告: 目录“ / Users / petertao / Library / Caches / pip / http”或其父目录不属于当前用户,并且缓存已被禁用。请检查该目录的权限和所有者。如果使用sudo执行pip,则可能需要sudo的-H标志。 目录“ /

  • 问题内容: 如果html文件是本地文件(在我的C驱动器上),则可以使用,但是如果html文件在服务器上并且图像文件是本地文件,则无法使用。这是为什么? 任何可能的解决方法? 问题答案: 如果客户端可以请求本地文件系统文件,然后使用JavaScript找出其中的内容,则将是一个安全漏洞。 解决此问题的唯一方法是在浏览器中构建扩展。Firefox扩展和IE扩展可以访问本地资源。Chrome的限制更为严

  • 本文向大家介绍Python能做什么,包括了Python能做什么的使用技巧和注意事项,需要的朋友参考一下 Python 作为一种功能强大的编程语言,因其简单易学而受到很多开发者的青睐。那么,Python 的应用领域有哪些呢? 概括起来,Python 的应用领域主要有如下几个。 Web应用开发 Python 经常被用于 Web 开发。例如,通过 mod_wsgi 模块,Apache 可以运行用 Pyt

  • 本文向大家介绍python的pip有什么用,包括了python的pip有什么用的使用技巧和注意事项,需要的朋友参考一下 pip 是 Python 的包管理器。这意味着它是一个工具,允许你安装和管理不属于标准库的其他库和依赖。 软件包管理极其重要,所以自 Python3 的 3.4 版本以及 Python2 的 2.7.9 版本开始,pip 一直被直接包括在 Python 的安装包内,同样还被用于

  • 问题内容: 我不明白为什么Python没有功能。它有一个内置的(我认为是姐姐),但没有。 在python 2.6中甚至有一个函数(在math中),但是没有符号。当您可以只写一个然后直接从中获取时,为什么还要写一个?后者会更清楚:x带有y的符号,而带copysign的则必须记住它是x带有y的符号还是y带有x的符号! 显然,除了,它不提供任何其他功能,但是它也将更具可读性(对于像python这样的高度