繁体   English   中英

在sudo下运行pip install是否可以接受并且安全?

[英]Is it acceptable and safe to run pip install under sudo?

我已经开始使用Mac来安装Python软件包,就像在工作Windows PC时一样。 但是在Mac上,我在写入日志文件或站点程序包时经常遇到权限被拒绝的错误。

因此,我考虑过在sudo下运行pip install <package> ,但是考虑到我只是想将其安装在当前用户帐户下,这是sudo的安全/可接受的使用吗?

日志文件I / O错误的示例回溯:

Command /usr/bin/python -c "import setuptools;__file__='/Users/markwalker/build/pycrypto/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /var/folders/tq/hy1fz_4j27v6rstzzw4vymnr0000gp/T/pip-k6f2FU-record/install-record.txt failed with error code 1 in /Users/markwalker/build/pycrypto
Storing complete log in /Users/markwalker/Library/Logs/pip.log
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 8, in <module>
    load_entry_point('pip==1.1', 'console_scripts', 'pip')()
  File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py", line 116, in main
    return command.main(args[1:], options)
  File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 141, in main
    log_fp = open_logfile(log_fn, 'w')
  File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 168, in open_logfile
    log_fp = open(filename, mode)
IOError: [Errno 13] Permission denied: '/Users/markwalker/Library/Logs/pip.log'

更新这可能取决于权限,但是最好的方法是为您的python项目使用虚拟环境。 除非绝对必要,否则应避免运行sudo pip

使用虚拟环境

$ virtualenv myenv
.. some output ..
$ source myenv/bin/activate
(myenv) $ pip install what-i-want

当您要为全局,系统范围的Python安装安装内容时,仅使用sudo或提升的权限。

最好使用虚拟环境为您隔离软件包。 这样一来,您就可以在不影响全局python安装的情况下进行游戏。

另外,virtualenv不需要提升的权限。

sudo下运行pip install是否可以接受并且安全?

它不安全并且被皱着眉头–请参阅运行“ sudo pip”有什么风险? 要在主目录中安装Python软件包,您不需要root特权。 请参阅--user选项的说明

您最初的问题是pip无法将日志写入文件夹。

IOError: [Errno 13] Permission denied: '/Users/markwalker/Library/Logs/pip.log'

您需要将cd放入一个文件夹,在该文件夹中,被调用的进程可以像/tmp一样编写,因此cd /tmp并重新调用该命令可能会起作用,但这不是您想要的。

实际上对于这种特定情况(您不想使用sudo安装python软件包)并且不需要全局软件包安装,可以使用--user标志,如下所示:

pip install --user <packagename>

它会很好地工作。

我假设您具有一个用户python python安装,并且不想打扰有关virtualenv (不是很用户友好)或pipenv的阅读

正如评论部分中的一些人指出的那样,除非您不知道该怎么办并陷入困境,否则下一个方法不是一个好主意:

对于全局包的另一种方法例如您要执行的操作:

chown -R $USER /Library/Python/2.7/site-packages/

或更一般地

chown -R $USER <path to your global pip packages>

因为我有同样的问题,所以我想强调一下, 布莱恩·凯恩的第一条评论实际上是“ IOError:[Errno 13]”问题的解决方案:

如果在temp目录( cd /tmp )中执行,那么如果我运行sudo pip install foo ,就不会再发生IOError。

我有安装问题virtualenvwrapper在成功安装virtualenv

执行此操作后,我的终端抱怨:

pip install virtualenvwrapper

因此,我尝试失败 (不推荐)

sudo pip install virtualenvwrapper

然后,我成功安装了它:

pip install --user virtualenvwrapper

您的权限似乎混乱了。 在终端中输入chown -R markwalker ~并再次尝试pip 让我知道您是否已排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM