Ранее я уже смотрел что есть Jupyter Notebook
, но то было на Ubuntu Trusty
и Python
был 2
версии, сейчас оптимизация заметки на Ubuntu Bionic
и Python
третьей версии
8 hg clone --insecure https://ekzorchik@172.35.35.8/hg/dproject 9 sudo ./dproject/default ekzorchik@srv-bionic:~$ sudo chown -R $USER:$USER /home/$USER ekzorchik@srv-bionic:~$ sudo apt-get install python3-pip python3-dev python3-nbconvert -y ekzorchik@srv-bionic:~$ sudo -H pip3 install --upgrade pip ekzorchik@srv-bionic:~$ sudo -H pip3 install virtualenv ekzorchik@srv-bionic:~$ mkdir project ekzorchik@srv-bionic:~$ cd project/ ekzorchik@srv-bionic:~/project$
Создаю виртуальное окружение для проекта и именую его как default
ekzorchik@srv-bionic:~/project$ virtualenv default Using base prefix '/usr' New python executable in /home/ekzorchik/project/default/bin/python3 Also creating executable in /home/ekzorchik/project/default/bin/python Installing setuptools, pip, wheel... done. ekzorchik@srv-bionic:~/project$
Активирую проекта под именем default:
ekzorchik@srv-bionic:~/project$ source default/bin/activate (default) ekzorchik@srv-bionic:~/project$
Устанавливаю внутри проекта default
окружение Jupyter Notebook:
(default) ekzorchik@srv-bionic:~/project$ pip install jupyter
Запускаю Jupyter Notebook:
(default) ekzorchik@srv-bionic:~/project$ jupyter notebook [I 11:50:33.463 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret [I 11:50:34.091 NotebookApp] Serving notebooks from local directory: /home/ekzorchik/project [I 11:50:34.091 NotebookApp] The Jupyter Notebook is running at: [I 11:50:34.092 NotebookApp] http://localhost:8888/?token=2cf44801a762abe0c5ded7f379337bddcda8bb425bd71f94 [I 11:50:34.092 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 11:50:34.101 NotebookApp] No web browser found: could not locate runnable browser. [C 11:50:34.102 NotebookApp] To access the notebook, open this file in a browser: file:///run/user/1000/jupyter/nbserver-1276-open.html Or copy and paste one of these URLs: http://localhost:8888/?token=2cf44801a762abe0c5ded7f379337bddcda8bb425bd71f94 ^C[I 11:51:58.776 NotebookApp] interrupted Serving notebooks from local directory: /home/ekzorchik/project 0 active kernels The Jupyter Notebook is running at: http://localhost:8888/?token=2cf44801a762abe0c5ded7f379337bddcda8bb425bd71f94 Shutdown this notebook server (y/[n])? y [C 11:52:02.946 NotebookApp] Shutdown confirmed [I 11:52:02.948 NotebookApp] Shutting down 0 kernels (default) ekzorchik@srv-bionic:~/project$
Но вот только доступ в записную книжку возможен лишь локально на этой рабочей станции, а чтобы получить доступ с других систем, то нужно чтобы серверная часть была запущена с применением этого ключа:
Создаю конфигурационный файл для Jupyter Notebook:
(default) ekzorchik@srv-bionic:~/project$ jupyter notebook --generate-config Writing default config to: /home/ekzorchik/.jupyter/jupyter_notebook_config.py (default) ekzorchik@srv-bionic:~/project$ nano ~/.jupyter/jupyter_notebook_config.py (default) ekzorchik@srv-bionic:~/project$ #Снимаю символ комментария со строки ниже и выставляю значение с False на True c.NotebookApp.allow_remote_access = True (default) ekzorchik@srv-bionic:~/project$
После запускаю:
(default) ekzorchik@srv-bionic:~/project$ jupyter notebook --ip='*'
После с другой вкладки подключенной к текущей системы смотрю, а прослушивается ли порт 8888
на всех интерфейсах — ответ да! Значит я могу с основной системы подключиться с развернутому/запущенному Jupyter Notebook:
ekzorchik@srv-bionic:~$ sudo netstat -tulpn | grep 8888 tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 1440/python3 tcp6 0 0 :::8888 :::* LISTEN 1440/python3
Подключаюсь через браузер где в строке адреса указываю URL
следующего вида: http://172.33.33.4:8888
и в ответ получаю:
Но как и в прошлый раз на Ubuntu Trusty Server
мне нужно получить token
пароль для входа:
ekzorchik@srv-bionic:~$ jupyter notebook list Currently running servers: http://localhost:8888/?token=e0b0d708ca3248dc158d97d6c40917eb7313be9ef862c60c :: /home/ekzorchik/project
где пароль это символ после знака равенства и до символов двоеточия, т. е.
E0b0d708ca3248dc158d97d6c40917eb7313be9ef862c60c
— это пароль, копирую его в буфер обмена и вставляю на странице браузера:
Не подходит, странно вроде так раньше работало. Читаю документацию и натыкаюсь на описание установки пароля на вход:
(default) ekzorchik@srv-bionic:~/project$ jupyter notebook password Enter password: 712mdbdr@ Verify password: 712mbddr@ [NotebookPasswordApp] Wrote hashed password to /home/ekzorchik/.jupyter/jupyter_notebook_config.json (default) ekzorchik@srv-bionic:~/project$ cat ~/.jupyter/jupyter_notebook_config.json { "NotebookApp": { "password": "sha1:eb2e8554a139:f1163e3c064a220353bbc3284bf7487096297e88" } }(default) ekzorchik@srv-bionic:~/project$ (default) ekzorchik@srv-bionic:~/project$ jupyter notebook --ip='*'
Пробую авторизоваться с созданным паролем:
в поле Password
: ввожу пароль, я указывал что он будет 712mbddr@
и нажимаю Log in
и все получилось, я внутри:
Проверяю, как происходит работа:
New — Text File, Language
— выбираю Python
и набираю код:
#!/usr/bin/python3 import subprocess print("Ping host ekzorchik.ru") code = subprocess.call(["ping","www.ekzorchik.ru","-c 2"])
После сохраняю: File — Save — Logout
, но у меня почему-то не отрабатывает, но если нажать на логотип «Jupyter»
то возвращается на главный экран проекта:
после New — Terminal -
ekzorchik@srv-bionic:~/project$ ekzorchik@srv-bionic:~/project$ cd default/ ekzorchik@srv-bionic:~/project/default$ ls bin etc include lib share Untitled.ipynb untitled.txt ekzorchik@srv-bionic:~/project/default$ mv untitled.txt test.py ekzorchik@srv-bionic:~/project/default$ chmod +x test.py ekzorchik@srv-bionic:~/project/default$ ./test.py Ping host ekzorchik.ru PING www.ekzorchik.ru (185.98.87.33) 56(84) bytes of data. 64 bytes from 185.98.87.33 (185.98.87.33): icmp_seq=1 ttl=57 time=6.48 ms 64 bytes from 185.98.87.33 (185.98.87.33): icmp_seq=2 ttl=57 time=3.77 ms --- www.ekzorchik.ru ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 3.777/5.130/6.483/1.353 ms ekzorchik@srv-bionic:~/project/default$
Слишком как-то много действий для запуска мне так кажется, выхожу из консоли:
ekzorchik@srv-bionic:~/project/default$ exit exit [CLOSED]
и закрываю эту вкладку окна браузера. Но в использовании Jupyter Notebook
есть интерактивное средство написания кода: New — (Notebook) Python 3
Набираю код, а после нажимаю кнопку «RUN»
, написанное исполняется и возвращается в моем случае результат в виде нуля, т. е. Все успешно:
если через файл сохранить написанное в формате Python
, то открыв скачанный файл увижу, что в самое начало файла добавились заголовки:
#!/usr/bin/env python # coding: utf-8
Это кстати мне тоже информация на будущее. Вот из таких вот мелочей порой узнаешь больше чем знал до этого.
Также работает возможность посмотреть какие команды есть у импортированного модуля:
import subprocess subprocess.<TAB>
Также можно посмотреть справку по команде в модуле:
Файлы вот этих вот проектов в консоли Python 3
сохраняется, как файлы с расширением *.ipynb
Пока я на этом остановлюсь и просто начну использовать и привыкать к новому для меня инструменту. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.