Если я попытаюсь проверить, находится ли jupyter
на моем пути или не используется, я получаю что-то взамен.
which jupyter
/home/usr/.local/bin/jupyter
Но когда я пытаюсь установить и включить расширение, я сталкиваюсь с ошибкой:
sudo jupyter serverextension enable --py ipyparallel
sudo jupyter nbextension install --py ipyparallel
sudo jupyter nbextension enable --py ipyparallel
Ошибка говорит sudo: jupyter: команда не найдена
И мне нужен доступ sudo. Причина выполнения без sudo, работа не выполняется:
jupyter serverextension enable --py ipyparallel
jupyter nbextension install --py ipyparallel
jupyter nbextension enable --py ipyparallel
Enabling: ipyparallel.nbextension
- Writing config: /home/usr/.jupyter
- Validating...
ipyparallel.nbextension OK
Installing /home/usr/.local/lib/python2.7/site-packages/ipyparallel/nbextension/static -> ipyparallel
Traceback (most recent call last):
File "/home/usr/.local/bin/jupyter-nbextension", line 8, in <module>
sys.exit(main())
File "/home/usr/.local/lib/python2.7/site-packages/jupyter_core/application.py", line 270, in launch_instance
return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
File "/home/usr/.local/lib/python2.7/site-packages/traitlets/config/application.py", line 664, in launch_instance
app.start()
File "/home/usr/.local/lib/python2.7/site-packages/notebook/nbextensions.py", line 988, in start
super(NBExtensionApp, self).start()
File "/home/usr/.local/lib/python2.7/site-packages/jupyter_core/application.py", line 259, in start
self.subapp.start()
File "/home/usr/.local/lib/python2.7/site-packages/notebook/nbextensions.py", line 716, in start
self.install_extensions()
File "/home/usr/.local/lib/python2.7/site-packages/notebook/nbextensions.py", line 695, in install_extensions
**kwargs
File "/home/usr/.local/lib/python2.7/site-packages/notebook/nbextensions.py", line 225, in install_nbextension_python
destination=dest, logger=logger
File "/home/usr/.local/lib/python2.7/site-packages/notebook/nbextensions.py", line 126, in install_nbextension
ensure_dir_exists(nbext)
File "/home/usr/.local/lib/python2.7/site-packages/jupyter_core/utils/__init__.py", line 13, in ensure_dir_exists
os.makedirs(path, mode=mode)
File "/usr/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/share/jupyter'
Enabling tree extension ipyparallel/main...
- Validating: OK
В этом случае (^) ошибка говорит: OSError: [Errno 13] Permission denied: '/ usr / local / share / jupyter'
Итак, как я могу это исправить?
Я добавил export PATH = "$ HOME / .local / bin: $ PATH"
в последнюю строку ~ / .bashrc
Когда вы используете sudo
, действует другое окружение. Соответственно, ваша личная папка bin (/home/usr/.local/bin/jupyter
) больше не находится в пути поиска, и команда больше не найдена.
Действующий путь определен в файле sudoers. В Ubuntu он выглядит так:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Таким образом, установите свой бинарник в (/usr/local/bin
), чтобы он был найден при запуске через команду sudo
. По соглашению, это каталог, предназначенный для установленных вручную исполняемых файлов, т.е. управляемых администратором вручную, а не автоматически дистрибутивом.
В качестве альтернативы, оставьте двоичный файл там, где он есть, и используйте опцию -E
команды sudo
. Это сохранит ваше текущее окружение, включая путь. Некоторые соображения: 1) операционная система должна позволять это (Ubuntu позволяет), 2) если возможно, лучше не входить в собственную папку пользователя для операций, требующих прав root, и 3) конечно, не запускайте таким образом графические программы, потому что это может нарушить права доступа.