而对于一个更加温和的回答:
- 你确实总是需要使用
sudo apt-get install ...
,这只是工具设计的方式。
- 在使用
pip install
时,使用sudo [-H]
是可能和可选的,具体取决于你想要做什么(因此,“有争议”)。
一个Python的座右铭是:“应该有一种--而最好只有一种--明显的方法来做到这一点。”就像大多数座右铭一样,它在每一个可能的机会都被戏谑地打破了。(我想这就是座右铭存在的原因。)不幸的是,在我非常谦虚的意见中,Python生态系统由许多相互冲突的“硬性规则”组成,永远不可违背...除非是“呀哒呀哒”(恶魔、细节等)。在几乎所有情况下,这是由于语言和工具的历史演变所致(而当人们只想继续工作时,谁想要/需要历史课呢?)--但也可能是由于Mac/Win/*Nix平台之间的差异(例如,Unix/Linux有类似的心态,但具有数十年的成熟经验优势)。因此,请对所有这些“错误的做法”和“本质上错误的”盲从者抱着巨大的怀疑态度。有些人确实好心。(其他人只是,嗯,刻薄。)
首先,与其使用基本的“每个用户安装”,你几乎总是更喜欢使用virtualenv,因为实际上,这可能是你最终需要的。所以你最好现在就开始使用它。
如何做到这一点,确切地说,“取决于”(参见Python格言,上文)。如果你正在使用Conda(主要用于Mac和Windows),它将会设置
使用Conda。如果使用“纯”Python
[sic],那么它取决于你使用的版本和哪些Python工具,但
virtualenvwrapper非常方便。
其次,作为“永远不要使用sudo”规则的一个反例,您可能更喜欢使用
sudo -H pip install -U numpy
,这是完全可以接受的,甚至有优势,因为它可以避免在每个虚拟环境中单独下载/安装/维护大型库,而您只需要/需要一个版本。像scikit-learn、NumPy、matplotlib、SciPy、pandas等这样的大型流行框架可以安装一次并完成,并且可以在各种环境中
重复使用。此外,您友好的本地系统管理员可能能够为系统上的
每个用户安装这些库 - 很明显,他们也会通过
sudo
来执行此操作,例如对于TensorFlow等更复杂的安装。
最后,如果您正在安装某个随机的第三方库来执行这样那样的操作(如Twitter API、文本转换、代码格式化等),那么我完全同意 - 不要使用sudo以root身份安装。当然,请以当前用户的身份进行安装。但是请记住,您的用户帐户包含了所有真正重要的内容。
sudo pip install
的指令是错误的。 - Piotr Dobrogostsudo pip install
和curl "some-url" | sudo bash
安装方式一样糟糕。同样地,我们曾经遇到过几次,一些开发人员在他们的工作站上使用sudo pip install
安装某些依赖项,然后因为缺少requirements.txt
或setup.py
文件中所安装的内容,将有问题的代码提交到代码库中,而其他人则需要弄清楚需要哪些依赖项,而这个人正在度假。 - Mike DeSimone