【问题标题】:Permission Error For Conda UpdateConda 更新的权限错误
【发布时间】:2018-03-31 06:24:42
【问题描述】:

这里是 Python 新手。我遇到了 anaconda 的权限问题。一切运行正常,但我似乎无法更新 conda、创建新环境或安装新软件包。

当我尝试更新 (conda update conda) 时,我得到:

正在获取包元数据.....发生意外错误。 请考虑将以下信息发布到 conda GitHub 问题跟踪器位于:

https://github.com/conda/conda/issues

当前 conda 版本:

platform : osx-64
conda version : 4.3.29
conda is private : False
conda-env version : 4.3.29
conda-build version : not installed
python version : 2.7.11.final.0
requests version : 2.14.2
root environment : /anaconda  (writable)
default environment : /anaconda
envs directories : /anaconda/Users/Tina/.conda/envs
package cache : /anaconda/Users/Tina/.conda/pkgs
channel URLs : https://conda.anaconda.org/anaconda-fusion/osx-64
               https://conda.anaconda.org/anaconda-fusion/noarch
               https://repo.continuum.io/pkgs/main/osx-64
               https://repo.continuum.io/pkgs/main/noarch
               https://repo.continuum.io/pkgs/free/osx-64
               https://repo.continuum.io/pkgs/free/noarch
               https://repo.continuum.io/pkgs/r/osx-64
               https://repo.continuum.io/pkgs/r/noarch
               https://repo.continuum.io/pkgs/pro/osx-64
               https://repo.continuum.io/pkgs/pro/noarch
config file : /Users/Tina/.condarc
netrc file : None
offline mode : False
user-agent : conda/4.3.29 requests/2.14.2 CPython/2.7.11 Darwin/15.5.0 OSX/10.11.5    
UID:GID : 501:20

$ /anaconda/bin/conda update conda

Traceback (most recent call last):
  File "/anaconda/lib/python2.7/site-packages/conda/exceptions.py", line 640, in conda_exception_handler
    return_value = func(*args, **kwargs)
  File "/anaconda/lib/python2.7/site-packages/conda/cli/main.py", line 140, in _main
    exit_code = args.func(args, p)
  File "/anaconda/lib/python2.7/site-packages/conda/cli/main_update.py", line 65, in execute
    install(args, parser, 'update')
  File "/anaconda/lib/python2.7/site-packages/conda/cli/install.py", line 231, in install
    unknown=index_args['unknown'], prefix=prefix)
  File "/anaconda/lib/python2.7/site-packages/conda/core/index.py", line 101, in get_index
    index = fetch_index(channel_priority_map, use_cache=use_cache)
  File "/anaconda/lib/python2.7/site-packages/conda/core/index.py", line 120, in fetch_index
    repodatas = collect_all_repodata(use_cache, tasks)
  File "/anaconda/lib/python2.7/site-packages/conda/core/repodata.py", line 75, in collect_all_repodata
    repodatas = _collect_repodatas_serial(use_cache, tasks)
  File "/anaconda/lib/python2.7/site-packages/conda/core/repodata.py", line 485, in _collect_repodatas_serial
    for url, schan, pri in tasks]
  File "/anaconda/lib/python2.7/site-packages/conda/core/repodata.py", line 115, in func
    res = f(*args, **kwargs)
  File "/anaconda/lib/python2.7/site-packages/conda/core/repodata.py", line 467, in fetch_repodata
    touch(cache_path)
  File "/anaconda/lib/python2.7/site-packages/conda/gateways/disk/update.py", line 64, in touch
    utime(path, None)
OSError: [Errno 13] Permission denied: '/anaconda/pkgs/cache/9cd9d6b5.json'```

我在尝试安装 seaborn 或创建环境时遇到同样的错误。我不愿意使用 sudo,因为我不想破坏东西。

我不明白这里发生了什么,因此非常感谢任何帮助。

非常感谢; T

【问题讨论】:

    标签: python permissions anaconda


    【解决方案1】:

    您用来运行conda update conda 的用户没有/anaconda/pkgs/cache/ 的写入权限。

    如果您不想以超级用户身份管理 anaconda,我建议您创建一个新用户组(即 anaconda_admin)并运行:

    sudo groupadd anaconda_admin
    sudo chown -R :anaconda_admin /anaconda
    

    然后您需要确保权限类似于:

    sudo chmod -R 775 /anaconda
    

    最后你的用户在 anaconda_admin 组中:

    sudo adduser <<<your_user>>> anaconda_admin
    

    【讨论】:

    • 谢谢林福德。我刚刚使用了sudo。是否有任何理由不应该以超级用户的身份进行更改?
    • @tinaK - 我不知道(这就是我所做的)。您的帖子表明您不想成为 root 用户才能管理软件包的安装/更新。您可能希望按照所述设置组的一个原因是,如果您希望允许其他人添加/更新软件包而不授予他们 root 权限。
    【解决方案2】:

    对于无法使用 sudo 的普通 Windows 用户:您必须通过右键单击控制台图标以管理员身份打开 conda 控制台,然后选择以管理员身份运行。那么 conda update conda 应该可以正常工作了。

    【讨论】:

      【解决方案3】:

      您应该使用 sudo 来将某些文件写入系统。它非常好,不会破坏你的操作系统,除非你使用复杂和基本的包和安装程序(conda 和 python 库绝对没问题)。

      sudo conda update conda 不仅应该更新 conda,还应该更新您希望安装的其他依赖项和软件包。

      简而言之,安装程序会尝试将一个文件写入它没有访问权限的某个目录(或修改目录中的文件)。使用sudo,您可以让他们在使用附加权限运行它时执行此操作。

      【讨论】:

      • 啊,这很简单 :) 谢谢 EZ!
      猜你喜欢
      • 2018-08-17
      • 2018-08-08
      • 1970-01-01
      • 2016-10-12
      • 2011-03-27
      • 2017-11-30
      • 2022-01-24
      • 2015-12-03
      • 1970-01-01
      相关资源
      最近更新 更多