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, я в порядке с этим.
Надеюсь, что это поможет.