Jupyter не может запуститься, «ImportError: этот пакет не должен быть доступен» - PullRequest
0 голосов
/ 30 октября 2018

Я не могу запустить сервер ноутбуков Jupyter на компьютере с Linux. Когда я набираю jupyter notebook, я получаю следующие ошибки:

ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.
During handling of the above exception, another exception occurred:
ModuleNotFoundError: No module named 'urlparse'

Вот некоторая системная информация, дайте мне знать, если что-нибудь еще может быть полезным:

$ jupyter --version
4.4.0

$ which jupyter
/usr/bin/jupyter

$ which python
/usr/bin/python

$ which python3
/usr/bin/python3

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"

$ cat /proc/version
Linux version 4.15.0-38-generic (buildd@lcy01-amd64-023) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #41-Ubuntu SMP Wed Oct 10 10:59:38 UTC 2018

$ pip3 --version
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)

Когда я пытаюсь python2 -m pip install urlparse --user, я получаю сообщение об ошибке: Collecting urlparse Could not find a version that satisfies the requirement

Сообщаемая ошибка напоминает показанную здесь , но заявленное решение создания и использования виртуальной среды python3, похоже, не сразу исправляет команду jupyter notebook, хотя она заменяет python и python3 исполняемый файл со ссылками на виртуальную среду:

(env) $ which jupyter
/usr/bin/jupyter
(env) $ which python
/home/.../env/bin/python
(env) $ which python3
/home/.../env/bin/python3

В случае, если есть какой-то вопрос о пути к питону, вот путь для питона 2:

$ ipython
...
In [2]: sys.path
Out[2]: 
['/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/home/$USER/.local/lib/python2.7/site-packages',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/home/$USER/.local/lib/python2.7/site-packages/IPython/extensions',
 '/home/$USER/.ipython']

и для python3

$ ipython3
...
In [2]: sys.path                                                                                                                                 
Out[2]: 
['/usr/lib/python36.zip',
 '/usr/lib/python3.6',
 '/usr/lib/python3.6/lib-dynload',
 '/home/$USER/.local/lib/python3.6/site-packages',
 '/usr/local/lib/python3.6/dist-packages',
 '/usr/lib/python3/dist-packages',
 '/home/$USER/.local/lib/python3.6/site-packages/IPython/extensions',
 '/home/$USER/.ipython']

Полная трассировка стека первой ошибки при запуске Jupyter:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/notebook/nbextensions.py", line 18, in <module>
    from urllib.request import urlretrieve
  File "/usr/lib/python3.6/urllib/request.py", line 88, in <module>
    import http.client
  File "/home/$USER/.local/lib/python3.6/site-packages/http/__init__.py", line 7, in <module>
    raise ImportError('This package should not be accessible on Python 3. '
ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.

Содержимое /usr/bin/jupyter выглядит следующим образом:

$ cat `which jupyter`
#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'jupyter-core==4.4.0','console_scripts','jupyter'
__requires__ = 'jupyter-core==4.4.0'
import re
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(
        load_entry_point('jupyter-core==4.4.0', 'console_scripts', 'jupyter')()
    )

Один из предложенных ответов заключается в том, что существует фиктивная http библиотека: « она переопределяется каким-либо сторонним модулем« http »по адресу /home/$USER/.local/lib/python3.6 / сайт-пакеты / HTTP ». Когда я удаляю эту библиотеку вручную, я получаю ошибку при импорте модуля site, например:

$ cd /home/$USER/.local/lib/python3.6/site-packages
$ mv ./http ~/Desktop/python_disabled/python3/
$ jupyter notebook
Error processing line 1 of /home/$USER/.local/lib/python3.6/site-packages/lazr.restfulclient-0.14.0-py3.6-nspkg.pth:

Failed to import the site module
Traceback (most recent call last):
  File "/usr/lib/python3.6/site.py", line 174, in addpackage
    exec(line)
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.6/types.py", line 171, in <module>
    import functools as _functools
  File "/usr/lib/python3.6/functools.py", line 21, in <module>
    from collections import namedtuple
  File "/usr/lib/python3.6/collections/__init__.py", line 32, in <module>
    from reprlib import recursive_repr as _recursive_repr
  File "/home/$USER/.local/lib/python3.6/site-packages/reprlib/__init__.py", line 7, in <module>
    raise ImportError('This package should not be accessible on Python 3. '
ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.

1 Ответ

0 голосов
/ 30 октября 2018

Эта часть неверна:

  File "/usr/lib/python3.6/urllib/request.py", line 88, in <module>
    import http.client
  File "/home/$USER/.local/lib/python3.6/site-packages/http/__init__.py", line 7, in <module>
    raise ImportError('This package should not be accessible on Python 3. '

Стандартный модуль пытается импортировать http.client, также стандартный модуль . И в вашей установке он перезаписывается каким-то сторонним модулем "http" на /home/$USER/.local/lib/python3.6/site-packages/http.

Удалите этот сторонний модуль.


Судя по той же проблеме с пакетом reprlib после удаления http в вашем обновленном вопросе, вы, похоже, набор micropython-lib пакетов установлены в /home/$USER/.local/lib/python3.6. Поскольку их много, проще просто удалить весь каталог. Я понятия не имею, как они там оказались, поскольку они несовместимы не только с обычной установкой CPython, но и с Python 3 в целом.


Наконец, обратите внимание, что в зависимости от ваших потребностей, использование virtualenv может быть более управляемым решением, чем pip --user.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...