由于EnvironmentError导致无法安装软件包:[Errno 13]

Bel*_*nar 33 python macos bash terminal pip

在我的macOS Mojave终端中,我想用pip安装一个python包.它有效,但它说:

You are using pip version 10.0.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Run Code Online (Sandbox Code Playgroud)

所以我想用给定的命令更新pip,但是我收到一个错误:

Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: 
'/Library/Python/2.7/site-packages/pip-18.0-py2.7.egg/EGG-INFO/PKG-INFO'
Consider using the `--user` option or check the permissions.
Run Code Online (Sandbox Code Playgroud)

这个东西可以滚动 - - - - - >

我真的不明白现在该做什么.此外,我意识到它在错误消息中说Python 2.7,但我有并且只想使用python 3.

que*_*o42 53

我更改了我正在使用的 venv 的权限,因为虚拟环境子文件夹中缺少权限。

sudo chmod -R a+rwx testenv
Run Code Online (Sandbox Code Playgroud)

然后我可以从 codium 中安装自动推荐的软件包。

请注意,这会循环遍历venv 中所有文件夹和文件的权限。如果您在 git 存储库中工作,该存储库应保留其大部分文件权限,以便您不会向 git 日志发送垃圾邮件,如果您有写保护的数据库文件夹或其他类似内容,则应该尝试仅选择需要的文件夹更改,可能是内置模块。检查您想要在代码内或网络上安装的软件包的依赖关系。这不再是一个快速的解决方法。

  • 只有这个解决方案有效。其他的都不起作用。谢谢。 (4认同)

Gon*_*cia 37

如果要使用python3 +安装软件包,则需要使用pip3 install packageName

要解决errno 13,您必须--user在末尾添加

pip3 install packageName --user
Run Code Online (Sandbox Code Playgroud)

编辑:

对于python中的任何项目,强烈建议Virtual enviroment上工作,该工具可通过为它们创建隔离的python虚拟环境来帮助将不同项目所需的依赖项分开。

为了使用python3 +创建一个,您必须使用以下命令:

virtualenv enviroment_name -p python3
Run Code Online (Sandbox Code Playgroud)

然后只需激活它就可以对其进行处理:

source enviroment_name/bin/activate
Run Code Online (Sandbox Code Playgroud)

激活虚拟环境后,虚拟环境的名称将显示在终端的左侧。这将使您知道虚拟环境当前处于活动状态。现在,您只需使用即可在该虚拟环境中安装与项目相关的依赖项pip

pip install package_name
Run Code Online (Sandbox Code Playgroud)

  • 我这样做了,但我仍然遇到麻烦。我安装了 Flask,但在我的 venv 中仍然找不到它。我能做些什么? (6认同)

Man*_*vin 13

要查看这实际上是否是权限问题,请运行以下命令来安装名为 的包xxx

pip install --user xxx
Run Code Online (Sandbox Code Playgroud)

例如:安装包bcrypt运行,

pip install --user bcrypt
Run Code Online (Sandbox Code Playgroud)

  • 这解决了我的生活,但我必须包含`-Iv`来覆盖已安装的内容,`pip install -Iv --user xxx==xyz`,例如:`pip install -Iv --user pandas==1.3。 5` (2认同)

Dom*_*aul 12

关于permissions命令,请在终端命令前使用sudo:

sudo pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

Sudo是一个程序,允许您使用超级用户的权限运行命令.

关于python尝试运行pip作为这样的可执行文件:

python3.6 -m pip install <package>
Run Code Online (Sandbox Code Playgroud)

  • 我不完全确定,但使用 root 权限运行此类命令通常不是最好的主意:一旦使用 sudo,用户将从“you”更改为“root”,这可能会导致不需要的结果。例如,库可以安装在 /home/root 中,而不是 /home/yourusername 中。此外,将创建与 root 用户/组关联的文件。仅当命令应将文件保存在 /usr/local/bin 等系统文件夹中时才需要 Sudo !;) (2认同)
  • 是的,这是真的。我对此添加了评论 (2认同)

小智 7

我犯了同样的错误,然后我意识到我已经以 root 用户身份创建了我的虚拟环境。它被写保护,所以请检查您的虚拟环境是否被写保护。制作一个新的 venv 并重试


Eri*_*ski 6

答案在错误消息中。过去,您或某个进程执行了以下操作sudo pip,导致其下的某些目录/Library/Python/2.7/site-packages/...具有权限,从而使您的当前用户无法访问它。

然后你做了一个pip install whatever依赖于另一件事的。

因此,要修复它,请访问 /Library/Python/2.7/site-packages/... 并找到具有 root 或非您用户权限的目录,然后删除然后重新安装这些包,或者只是将所有权强制给用户谁应该有权访问。

  • 简单且有效。使用 $whoami 知道您当前是哪个用户,然后 $sudo chown username /Library/Python/2.7/site-packages/ 然后 pip install everything...您可能必须递归地使用 chown (2认同)

Dee*_*pta 5

我在安装numpy时遇到了同样的问题pip install numpy

然后我试过了

sudo -H pip3 install --upgrade pip

sudo -H pip3 install numpy

它对我来说效果很好。

说明:-H带(HOME)选项sudo设置HOME环境变量设置为目标用户(root默认情况下)的主目录。默认情况下,sudo 不会修改 HOME。


she*_*r35 5

当我尝试安装一个包(flask-classful)时,我遇到了同样的错误。
我犯了以 root 身份安装 anaconda 的错误。我更改了已安装 anaconda 文件夹的所有权,并且可以成功安装该软件包。

使用chown带有选项的命令-R递归更改已安装 anaconda 文件夹的所有权,如下所示:

chown -R owner:group /path/to/anaconda

这里 owner 是你的用户名,group 是组名。