Anaconda3 - AttributeError: объект 'dict' не имеет атрибута 'rsplit'

Я запускаю Anaconda3 локально через веб-браузер. Каждый раз, когда я перехожу в раздел "Конда", чтобы увидеть установленные пакеты (http://localhost:8888/tree#conda), я получаю An error occurred while retrieving installed packages. Internal Server Error.

Проверка журналов, это то, что в настоящее время происходит. Любые идеи?

[E 13:53:08.195 NotebookApp] 500 GET /conda/environments/root?_=1484574786374 (127.0.0.1) 760.41ms referer=http://localhost:8888/tree?
[E 13:53:14.557 NotebookApp] Unhandled error in API request
    Traceback (most recent call last):
      File "/root/anaconda3/lib/python3.5/site-

    packages/notebook/base/handlers.py", line 503, in wrapper
            result = yield gen.maybe_future(method(self, *args, **kwargs))
          File "/root/anaconda3/lib/python3.5/site-packages/nb_conda/handlers.py", line 62, in get
            self.finish(json.dumps(self.env_manager.env_packages(env)))
          File "/root/anaconda3/lib/python3.5/site-packages/nb_conda/envmanager.py", line 124, in env_packages
            "packages": [pkg_info(package) for package in data]
          File "/root/anaconda3/lib/python3.5/site-packages/nb_conda/envmanager.py", line 124, in <listcomp>
            "packages": [pkg_info(package) for package in data]
          File "/root/anaconda3/lib/python3.5/site-packages/nb_conda/envmanager.py", line 16, in pkg_info
            name, version, build = s.rsplit('-', 2)
        AttributeError: 'dict' object has no attribute 'rsplit'
    [E 13:53:14.558 NotebookApp] {
          "Accept-Language": "en-US,en;q=0.8,es;q=0.6",
          "Connection": "keep-alive",
          "X-Requested-With": "XMLHttpRequest",
          "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
          "Accept-Encoding": "gzip, deflate, sdch, br",
          "Cookie": "_xsrf=2|0e84028c|becasdfafdssffjkafdsjkf473451bfcb|1484574343; username-localhost-8888=\"2|1:0|10:1484574347|23:username-localhost-8888|44:ODBlMWE5Mjk1MjRiNDNmNDhkZTVkNTU5MGI3NTNmNDQ=|83dad5a9e1aa2da460539882d41f5b3a7ac93163dab3b324526b730be88d7d69\"",
          "Referer": "http://localhost:8888/tree?",
          "Host": "localhost:8888",
          "Accept": "application/json, text/javascript, */*; q=0.01"
        }
    [E 13:53:14.559 NotebookApp] 500 GET /conda/environments/root?_=1484574792779 (127.0.0.1) 750.79ms referer=http://localhost:8888/tree?

Ответ 1

Может быть, это должен быть комментарий, но у меня недостаточно репутации для них.

Это сообщила об ошибке в nb_conda. Формат вывода информации о пакете conda изменился, и nb_conda необходимо адаптировать. Уже существует запрос pull, который исправляет это, но я не смог найти изменение в любом канале.

Установка ветки, включая исправление, помогает:

pip install git+https://github.com/Anaconda-Platform/[email protected] --upgrade

--upgrade является необязательным, мне это нужно, потому что то, что я установил, имеет ту же версию.

Установка nb_conda_kernels (который мог бы втянуть nb_conda в качестве зависимости) из канала conda-forge, как указано motivic, не помог в мой случай, но должен работать, если в пакете есть исправление.

Ответ 2

У меня тоже была эта проблема (conda 4.3.25, Linux Mint 17.2 Rafaela, Ubuntu 14.04.2 LTS, Trusty Tahr). Я попытался использовать обычные средства исправления без изменений, поэтому я исправил код в строке 16 .../site-packages/nb_conda/envmanager.py.

    name, version, build = s.rsplit('-', 2)

становится:

    if isinstance(s, dict):
        s = s['dist_name']
    name, version, build = s.rsplit('-', 2) 

Это было полезно для меня, YMMV. Обратите внимание, что текущий envmanager.py в Github имеет аналогичное исправление, основанное на содержании словаря.

Ответ 3

Мотивированное предложение (в его комментарии к вопросу) сработало для меня.

$ conda install -c conda-forge nb_conda_kernels

У меня уже была более ранняя версия nb_conda_kernels, поэтому она обновилась до версии 2.1.0.

The following packages will be UPDATED:
    nb_conda_kernels: 2.0.0-py27_0 --> 2.1.0-py27_0 conda-forge

После этого вкладка Conda в Jupyter Notebook отлично справилась. Я также смог conda install pandas, который ранее сообщал мне об ошибке.

Ответ 4

Пока я щелкнул вкладку conda в Jupyter Notebook, она всегда выдавала ту же ошибку, что и вы.

Все решения на Stackoverflow и github не могут помочь мне, поэтому в отчаянии я нашел в Anaconda Doc эту строку (на странице Doc conda extension):

ПРИМЕЧАНИЕ. Эти расширения уже были установлены в версиях Anaconda 4.1 и 4.2. Если у вас установлена ​​Anaconda v4.1 или v4.2, нет необходимости для их установки отдельно. Чтобы начать использовать их, откройте новый или существующий ноутбук.

Проверьте, не превышает ли ваша Anaconda версию 4.2. Шахта - 4.4.0.

W.Zhan Lesson 1 Data Analysis Process $ conda remove nb_conda
Fetching package metadata .........
Solving package specifications: .

Package plan for package removal in environment /Users/W.Zhan/anaconda:

The following packages will be REMOVED:

    _nb_ext_conf:     0.4.0-py36_1
    nb_anacondacloud: 1.4.0-py36_0
    nb_conda:         2.2.0-py36_0
    nbpresent:        3.0.2-py36_0

Proceed ([y]/n)? y

W.Zhan Lesson 1 Data Analysis Process $ python --version
Python 3.6.1 :: Anaconda 4.4.0 (x86_64)

Таким образом, я удалил conda в терминале и просто активировал среду, которую я хотел использовать, и в этой конкретной среде откройте Jupyter.

W.Zhan Lesson 1 Data Analysis Process $ source activate DAND
(DAND) W.Zhan Lesson 1 Data Analysis Process $ jupyter notebook

Не уверен, может ли это решить вашу проблему, для меня, хотя в Jupyter нет вкладки "conda", но пока я могу использовать настраиваемую среду в Jupyter, я в порядке с этим.

Надеюсь, что это поможет.