当前位置: 首页 > 知识库问答 >
问题:

在我的Mac上以root身份运行pip时,获得“拒绝许可”

谭玉泽
2023-03-14

我已经开始用我的苹果电脑安装Python包,就像我在工作中用我的视窗电脑一样;然而在我的苹果电脑上,我在写入日志文件或站点包时经常遇到权限拒绝错误。

因此我考虑运行pip安装

日志文件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。


共有3个答案

谷梁向荣
2023-03-14

您最初的问题是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安装,不想费心阅读虚拟环境(这不是非常用户友好)或pipenv。

正如评论部分的一些人指出的那样,下一种方法不是一个很好的主意,除非你不知道该做什么并且陷入困境:

另一种适用于全局包的方法,如在您的案例中,您希望执行以下操作:

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

或者更一般地说

chown -R $USER <path to your global pip packages>
谷梁宏恺
2023-03-14

可以接受吗

这是不安全的,它是不赞成的-看看运行'sudo pip'的风险是什么?要在主目录中安装Python包,您不需要根权限。请参见pip的--user选项的说明。

康言
2023-03-14

使用虚拟环境:

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

只有当你想要为全局的、系统范围的Python安装安装东西时,才使用sudo或提升的权限。

最好使用为您隔离软件包的虚拟环境。这样,您就可以在不污染全局python安装的情况下进行操作。

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

 类似资料:
  • 我正在Docker中制作python Django应用程序的简单图像。但是在构建容器的末尾,它抛出了下一个警告(我正在Ubuntu 20.04上构建):

  • 很抱歉我缺乏知识,但我正在尝试在Tensorflow上运行示例: 我得到了以下错误消息:PermissionDeniedError:删除文件失败: C:\用户\Jeff\AppData\本地\Temp\tmpgpmjek44\graph.pbtxt.tmpe31b9f4677cb426fbaef32dadeaf1a4d;权限被拒绝 我发现错误来自行estimator.train(input_fn=

  • 问题内容: 我正在使用Python在系统级别的Linux中进行项目。因此,我想知道,如果我以普通用户身份运行代码,并且正在访问系统文件,那么它应该具有root权限,那么我如何提示输入root密码并以超级用户身份运行其他代码。我想知道,如何以超级用户身份以密码提示运行python脚本。 任何帮助将不胜感激。先感谢您.. 问题答案: 您可以做的另一件事是,如果脚本不是以root身份执行的,则脚本会自动

  • 我使用Ansible安装了Nginx。要在Centos7上安装,我使用了yum软件包,因此默认情况下它是以root用户身份运行的。我希望它在Centos中以不同的用户(前nginx用户)身份启动和运行。当我尝试与其他用户一起运行时,会出现以下错误: nginx的工作。服务失败,因为控制进程已退出,错误代码为。有关详细信息,请参阅“systemctl status nginx.service”和“j

  • 我正在尝试使用谷歌首选的“工作负载身份”方法,使我的GKE应用程序能够安全地访问谷歌机密中的机密。 我已经完成了设置,甚至检查了故障排除部分的所有步骤(https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity?hl=sr-ba#故障排除)但我的日志中仍然出现以下错误: 未处理的异常。Grpc。果心RpcExce

  • 问题内容: 我正在我的Linux计算机上尝试运行Elasticsearch 2.1.1。 当我尝试执行Elasticsearch时,出现以下错误: 我提到了互联网上的一些建议,他们提到要以其他用户身份运行它。我的情况是仅以root用户身份运行。如何在不以其他用户身份运行的情况下解决此问题。 问题答案: 根据以下代码片段, 您应该可以通过启用属性 es.insecure.allow.root 来实现