栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

现在,有两种解决方法。如果你是舒服,并且不介意修改系统的全局包,继续使用

sudo
pip
(事实上,你可能需要使用
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
存储库的选项)。您可以
pipinstall
将程序包直接打包到virtualenv中,并根据您的内心需求创建尽可能多的环境,例如,每个环境的各种依赖项版本略有不同,因此您可以更强大地测试程序。您可以打开和关闭虚拟环境,例如,您可以让几个在终端的不同选项卡中运行,例如,并行测试。这是我的第二建议,因为在激活和使用环境方面涉及(略)更多的工作,并且如果您不太擅长命名环境,您可能会感到困惑。缺点包括缺乏系统范围的可用性(如第二种选择),以及需要在使用前手动激活虚拟环境的事实。

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号