Vorbereitung

Willkommen zur Vorbereitung zum Bokeh-Workshop

Fragen?:

Schaffe ich das? Bringt mir das wirklich was? Kann ich auch mit xxxOS am Workshop Teinehmen?

Haben Sie Fragen - schreiben Sie mir eine E-Mail oder rufen Sie mich einfach an: 08860 9 222 79 2

Benötigte Python Skills:

Dieser Workshop benötigt Python. Daher wird vorausgesetzt, dass Sie als TeilnehmerIn auf Ihrer Plattform Python als Programmiersprache beherrschen. Dazu gehört das Erzeugen von virtuellen Umgebungen, die Installation von Python Paketen und das Starten, Editieren, Debuggen von Python Code.

Sie sollten rudimentäre Kenntnisse von Numerical Python oder Pandas haben. Wenn sie nicht wissen, was "np.linspace" macht sollten Sie sich dringend mit Numpy beschäftigen.

Benötigte OS Skills:

Der Workshop wird präsentiert mit Debian Buster Linux. Produktions-Systeme arbeiten mit Linux und Debian ist ein gutes und weit verbreitetes Produktions-System. Teilnehmer, die sich mit Linux nicht auskennen, können mit Anaconda Python  auch unter Windows erfolgreich am Workshop teilnehmen. Viele Dinge sind aber unter Windows umständlicher als unter Linux. Es gibt geteilte Meinung darüber ob der Einsatz von Anaconda unter Linux sinnvoll ist. Ich kenne aber niemanden, der Python in der Produktion unter Windows einsetzt. Das kann aber meiner Filterblase geschuldet sein.

Windows:

Anfänger:

  • Suchen Sie sich Linux-Unterstützung. Ohne Linux-Kenntnisse werden Sie mit Interaktiver Web-Grafik spätestens in der Produktion scheitern.

Alle anderen:

  • Installieren Sie sich ein Debian Linux parallel zu Ihrem Windows oder lassen Sie ein Debian Linux in einer VM laufen.

Linux:

Jede (nicht ganz exotische) Linux Distribution stellt die nötigen Pakete für den Workshop bereit. Lernen Sie virtuelle Python Umgebungen zun erzeugen und managen.

Andere OS:

Ich denke Sie kommen alleine klar.

Alle OS: benötigte Software:

Virtuelle Umgebungen: https://github.com/pypa/pipenv

Installiert muss sein:

  • Python3
  • Bokeh
  • Pandas
  • Flask (Dient als Ersatz für den Produktions-Application-Server in dem Bokeh laufen soll)

Installation: Beispiel-Installation unter Debian Buster (Nützlich für Produktion):

Vorbereiten des Systems:

Zunächst muss pipenv installiert werden, welches virtuelle Python-Umgebungen erzeugen kann. Dies ist extrem wichtig, damit sich die einzelnen Python-Projekte nicht ins Gehege kommen können. Bitte versuchen Sie NICHT Bokeh oder andere große Software-Pakete wie Tensorflow etc. als Python-System-Pakete zu installieren!

Lege für jede Produktions-Anwendung einen eigenen Nutzer an. Wir nehmen als Beispiel "graph"

Werde Superuser und lege user "graph" an.

volker@buster:~$ su -
Passwort:
root@buster:~# adduser graph
Lege Benutzer »graph« an ...
Lege neue Gruppe »graph« (1001) an ...
Lege neuen Benutzer »graph« (1001) mit Gruppe »graph« an ...
Erstelle Home-Verzeichnis »/home/graph« ...
Kopiere Dateien aus »/etc/skel« ...
Geben Sie ein neues Passwort ein:
Geben Sie das neue Passwort erneut ein:
passwd: Passwort erfolgreich geändert
Benutzerinformationen für graph werden geändert.
Geben Sie einen neuen Wert an oder drücken Sie ENTER für den Standardwert
Vollständiger Name []:
Zimmernummer []:
Telefon geschäftlich []:
Telefon privat []:
Sonstiges []:
Sind die Informationen korrekt? [J/n]
root@buster:~#

Installiere Debian Paketmanager Aptitude (Ist mächtiger als apt-get)

root@buster:/home/volker# apt-get install aptitude
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
aptitude-common libboost-iostreams1.67.0 libboost-system1.67.0 libcgi-fast-perl libcgi-pm-perl libclass-accessor-perl libcwidget3v5 libencode-locale-perl libfcgi-perl libhtml-parser-perl
libhtml-tagset-perl libhttp-date-perl libhttp-message-perl libio-html-perl libio-string-perl liblwp-mediatypes-perl libparse-debianchangelog-perl libsigc++-2.0-0v5 libsub-name-perl
libtimedate-perl liburi-perl libxapian30
Vorgeschlagene Pakete:
aptitude-doc-en | aptitude-doc apt-xapian-index debtags libcwidget-dev libdata-dump-perl libhtml-template-perl libxml-simple-perl libwww-perl xapian-tools
Die folgenden NEUEN Pakete werden installiert:
aptitude aptitude-common libboost-iostreams1.67.0 libboost-system1.67.0 libcgi-fast-perl libcgi-pm-perl libclass-accessor-perl libcwidget3v5 libencode-locale-perl libfcgi-perl
libhtml-parser-perl libhtml-tagset-perl libhttp-date-perl libhttp-message-perl libio-html-perl libio-string-perl liblwp-mediatypes-perl libparse-debianchangelog-perl libsigc++-2.0-0v5
libsub-name-perl libtimedate-perl liburi-perl libxapian30
0 aktualisiert, 23 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 5.877 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 25,1 MB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren? [J/n]
Holen:1 http://debian.inf.tu-dresden.de/debian buster/main amd64 aptitude-common all 0.8.11-7 [1.768 kB]
...

Installation von PIPENV https://github.com/pypa/pipenv.

root@buster:~# aptitude install pipenv
Die folgenden NEUEN Pakete werden zusätzlich installiert:
binutils{a} binutils-common{a} binutils-x86-64-linux-gnu{a} build-essential{a} cpp{a} cpp-8{a} dh-python{a} dirmngr{a} dpkg-dev{a} fakeroot{a} g++{a} g++-8{a} gcc{a} gcc-8{a}
gir1.2-glib-2.0{a} gnupg{a} gnupg-l10n{a} gnupg-utils{a} gpg{a} gpg-agent{a} gpg-wks-client{a} gpg-wks-server{a} gpgconf{a} gpgsm{a} libalgorithm-diff-perl{a}
libalgorithm-diff-xs-perl{a} libalgorithm-merge-perl{a} libasan5{a} libassuan0{a} libatomic1{a} libbinutils{a} libc-dev-bin{a} libc6-dev{a} libcc1-0{a} libdpkg-perl{a}
libexpat1-dev{a} libfakeroot{a} libfile-fcntllock-perl{a} libgcc-8-dev{a} libgirepository-1.0-1{a} libglib2.0-0{a} libglib2.0-data{a} libgomp1{a} libisl19{a} libitm1{a} libksba8{a}
liblsan0{a} libmpc3{a} libmpfr6{a} libmpx2{a} libnpth0{a} libpython3-dev{a} libpython3.7{a} libpython3.7-dev{a} libquadmath0{a} libstdc++-8-dev{a} libtsan0{a} libubsan1{a}
linux-libc-dev{a} make{a} manpages-dev{a} patch{a} pinentry-curses{a} pipenv python-pip-whl{a} python3-asn1crypto{a} python3-cffi-backend{a} python3-crypto{a} python3-cryptography{a}
python3-dbus{a} python3-dev{a} python3-distutils{a} python3-entrypoints{a} python3-gi{a} python3-keyring{a} python3-keyrings.alt{a} python3-lib2to3{a} python3-pip{a}
python3-secretstorage{a} python3-setuptools{a} python3-virtualenv{a} python3-virtualenv-clone{a} python3-wheel{a} python3-xdg{a} python3.7-dev{a} shared-mime-info{a} xdg-user-dirs{a}
0 Pakete aktualisiert, 87 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
117 MB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 334 MB zusätzlich belegt sein.
Möchten Sie fortsetzen? [Y/n/?]
Holen: 1 http://security.debian.org/debian-security buster/updates/main amd64 linux-libc-dev amd64 4.19.67-2+deb10u1 [1.233 kB]
...

Werde user graph:

root@buster:~# su graph
graph@buster:/root$ cd
graph@buster:~$

Erzeuge "workspace" directory für die Arbeitsverzeichnisse:

graph@buster:/home/graph$ mkdir ~/workspace

Konfiguriere virtuelle Umgebungen: Füge zu den Nutzereinstellungen ~/.bashrc folgendes hinzu:

export WORKON_HOME=~/workspace
Z.B über den Editor nano
graph@buster:~$ nano  ~/.bashrc
oder über die Kommandozeile:
graph@buster:~$ echo "export WORKON_HOME=~/workspace" >> ~/.bashrc
  aktiviere die Änderungen an den Nutzereinstellungen
 
graph@buster:~$ . ~/.bashrc
Nutze pipenv um das VENV "summit" zu erzeugen:
graph@buster:~$ mkdir ~/workspace/summit
graph@buster:~$ cd ~/workspace/summit

graph@buster:~/workspace/summit$ pipenv install --python python3
Creating a virtualenv for this project…
Using /usr/bin/python3 (3.7.3) to create virtualenv…
⠋Already using interpreter /usr/bin/python3
Using base prefix '/usr'
/usr/lib/python3/dist-packages/virtualenv.py:1090: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
import imp
New python executable in /home/graph/workspace/summit-t11HHuu-/bin/python3
Also creating executable in /home/graph/workspace/summit-t11HHuu-/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.

Virtualenv location: /home/graph/workspace/summit-t11HHuu-
Creating a Pipfile for this project…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (5856fd)!
Installing dependencies from Pipfile.lock (5856fd)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run the following:
$ pipenv shell

Betreten des VENVs:

graph@buster:~/workspace/summit$ pipenv shell
Spawning environment shell (/bin/bash). Use 'exit' to leave.
graph@buster:~/workspace/summit$ . /home/graph/workspace/summit-t11HHuu-/bin/activate
(summit-t11HHuu-) graph@buster:~/workspace/summit$

Der Name des VENVs "(summit-t11HHuu-)" ist zufällig und wird bei ihnen anders lauten. Entscheidend ist, dass NEBEN dem Arbeitsverzeichnis "summit" nun das VENV liegt:

(summit-t11HHuu-) graph@buster:~/workspace/summit$ ls -al ..
insgesamt 16
drwxr-xr-x 4 graph graph 4096 Okt 1 12:57 .
drwxr-xr-x 5 graph graph 4096 Okt 1 12:57 ..
drwxr-xr-x 2 graph graph 4096 Okt 1 12:57 summit
drwxr-xr-x 6 graph graph 4096 Okt 1 12:57 summit-t11HHuu-

Es gilt: Gearbeitet (Coding) wird ausschliesslich in "summit". In "summit-t11HHuu-" liegt nur die Python-Installation und wird nicht angefasst. Die Python-Entwicklungs-Umgebung muss aber mitgeteilt bekommen, wo ("summit-t11HHuu-") der Interpreter liegt (Dazu später).

 
Die weiteren Operationen setzen voraus im richtigen VENV zu sein! Bitte doppelt checken ob Sie im VENV sind, also "(summit-t11HHuu-)" am beginn der Zeile steht. Wenn Sie hier feststecken unbedingt Kontakt mit uns aufnehmen. Alles weitere wird acuh fehlschlagen.
 
Verlassen des VENVs:
(summit-t11HHuu-) graph@buster:~/workspace/summit$ exit
exit
graph@buster:~/workspace/summit$
Betreten des VENVs z.B: nach dem nächsten Anmelden am System:
 
graph@buster:~$ 
graph@buster:~$ cd ~/workspace/summit
graph@buster:~/workspace/summit$ pipenv shell
Spawning environment shell (/bin/bash). Use 'exit' to leave.
graph@buster:~/workspace/summit$ . /home/graph/workspace/summit-t11HHuu-/bin/activate
(summit-t11HHuu-) graph@buster:~/workspace/summit$
 

Installation der benötigten Software:

Pandas installieren

(summit-t11HHuu-) graph@buster:~/workspace/summit$ pipenv install pandas
Installing pandas…
Looking in indexes: https://pypi.python.org/simple
Collecting pandas
Downloading https://files.pythonhosted.org/packages/7e/ab/ea76361f9d3e732e114adcd801d2820d5319c23d0ac5482fa3b412db217e/pandas-0.25.1-cp37-cp37m-manylinux1_x86_64.whl (10.4MB)
Collecting python-dateutil>=2.6.1 (from pandas)
Downloading https://files.pythonhosted.org/packages/41/17/c62faccbfbd163c7f57f3844689e3a78bae1f403648a6afb1d0866d87fbb/python_dateutil-2.8.0-py2.py3-none-any.whl (226kB)
Collecting pytz>=2017.2 (from pandas)
Downloading https://files.pythonhosted.org/packages/87/76/46d697698a143e05f77bec5a526bf4e56a0be61d63425b68f4ba553b51f2/pytz-2019.2-py2.py3-none-any.whl (508kB)
Collecting numpy>=1.13.3 (from pandas)
Downloading https://files.pythonhosted.org/packages/ba/e0/46e2f0540370f2661b044647fa447fef2ecbcc8f7cdb4329ca2feb03fb23/numpy-1.17.2-cp37-cp37m-manylinux1_x86_64.whl (20.3MB)
Collecting six>=1.5 (from python-dateutil>=2.6.1->pandas)
Downloading https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
Installing collected packages: six, python-dateutil, pytz, numpy, pandas
Successfully installed numpy-1.17.2 pandas-0.25.1 python-dateutil-2.8.0 pytz-2019.2 six-1.12.0
Adding pandas to Pipfile's [packages]…
Pipfile.lock (5856fd) out of date, updating to (17513c)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (17513c)!
Installing dependencies from Pipfile.lock (17513c)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 5/5 — 00:00:01

Installation von Bokeh

(summit-t11HHuu-) graph@buster:~/workspace/summit$ pipenv install bokeh
Installing bokeh…
Looking in indexes: https://pypi.python.org/simple
Collecting bokeh
Downloading https://files.pythonhosted.org/packages/89/25/a07183dd96ca22dafe429254985cbf8241ccd35730c5568d6502b3bc6bb7/bokeh-1.3.4.tar.gz (17.8MB)
Requirement already satisfied: six>=1.5.2 in /home/graph/workspace/summit-t11HHuu-/lib/python3.7/site-packages (from bokeh) (1.12.0)
Collecting PyYAML>=3.10 (from bokeh)
Downloading https://files.pythonhosted.org/packages/e3/e8/b3212641ee2718d556df0f23f78de8303f068fe29cdaa7a91018849582fe/PyYAML-5.1.2.tar.gz (265kB)
Requirement already satisfied: python-dateutil>=2.1 in /home/graph/workspace/summit-t11HHuu-/lib/python3.7/site-packages (from bokeh) (2.8.0)
Collecting Jinja2>=2.7 (from bokeh)
Downloading https://files.pythonhosted.org/packages/1d/e7/fd8b501e7a6dfe492a433deb7b9d833d39ca74916fa8bc63dd1a4947a671/Jinja2-2.10.1-py2.py3-none-any.whl (124kB)
Requirement already satisfied: numpy>=1.7.1 in /home/graph/workspace/summit-t11HHuu-/lib/python3.7/site-packages (from bokeh) (1.17.2)
Collecting pillow>=4.0 (from bokeh)
Downloading https://files.pythonhosted.org/packages/a4/da/2bd281c875686230eabc13d20ab590ea617563b0e746abfb0698c4d5b645/Pillow-6.1.0-cp37-cp37m-manylinux1_x86_64.whl (2.1MB)
Collecting packaging>=16.8 (from bokeh)
Downloading https://files.pythonhosted.org/packages/cf/94/9672c2d4b126e74c4496c6b3c58a8b51d6419267be9e70660ba23374c875/packaging-19.2-py2.py3-none-any.whl
Collecting tornado>=4.3 (from bokeh)
Downloading https://files.pythonhosted.org/packages/30/78/2d2823598496127b21423baffaa186b668f73cd91887fcef78b6eade136b/tornado-6.0.3.tar.gz (482kB)
Collecting MarkupSafe>=0.23 (from Jinja2>=2.7->bokeh)
Downloading https://files.pythonhosted.org/packages/98/7b/ff284bd8c80654e471b769062a9b43cc5d03e7a615048d96f4619df8d420/MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl
Collecting pyparsing>=2.0.2 (from packaging>=16.8->bokeh)
Downloading https://files.pythonhosted.org/packages/11/fa/0160cd525c62d7abd076a070ff02b2b94de589f1a9789774f17d7c54058e/pyparsing-2.4.2-py2.py3-none-any.whl (65kB)
Building wheels for collected packages: bokeh, PyYAML, tornado
Building wheel for bokeh (setup.py): started
Building wheel for bokeh (setup.py): finished with status 'done'
Created wheel for bokeh: filename=bokeh-1.3.4-cp37-none-any.whl size=8546147 sha256=5a46023e7aad884c01153ea7e147e96197778428e0d2d583c3106ef6fbec3eb4
Stored in directory: /home/graph/.cache/pip/wheels/a7/df/f1/80f108cd241803a5200576ac0eed112f0acea5582575cf08b6
Building wheel for PyYAML (setup.py): started
Building wheel for PyYAML (setup.py): finished with status 'done'
Created wheel for PyYAML: filename=PyYAML-5.1.2-cp37-cp37m-linux_x86_64.whl size=44103 sha256=53d7b7db3570c2b6c584818bcf5602ee59dd2fe4778f433ce88b9936cc9c9bdc
Stored in directory: /home/graph/.cache/pip/wheels/d9/45/dd/65f0b38450c47cf7e5312883deb97d065e030c5cca0a365030
Building wheel for tornado (setup.py): started
Building wheel for tornado (setup.py): finished with status 'done'
Created wheel for tornado: filename=tornado-6.0.3-cp37-cp37m-linux_x86_64.whl size=424518 sha256=79953d97bd125e5a814f130a1881913f7091b58a747be5564752cc99c4031a62
Stored in directory: /home/graph/.cache/pip/wheels/84/bf/40/2f6ef700f48401ca40e5e3dd7d0e3c0a90e064897b7fe5fc08
Successfully built bokeh PyYAML tornado
Installing collected packages: PyYAML, MarkupSafe, Jinja2, pillow, pyparsing, packaging, tornado, bokeh
Successfully installed Jinja2-2.10.1 MarkupSafe-1.1.1 PyYAML-5.1.2 bokeh-1.3.4 packaging-19.2 pillow-6.1.0 pyparsing-2.4.2 tornado-6.0.3
Adding bokeh to Pipfile's [packages]…
Pipfile.lock (17513c) out of date, updating to (9469c8)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (9469c8)!
Installing dependencies from Pipfile.lock (9469c8)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 13/13 — 00:00:02

Installation von Flask

 (summit-t11HHuu-) graph@buster:~/workspace/summit$ pipenv install flask
Installing flask…
Looking in indexes: https://pypi.python.org/simple
Collecting flask
Downloading https://files.pythonhosted.org/packages/9b/93/628509b8d5dc749656a9641f4caf13540e2cdec85276964ff8f43bbb1d3b/Flask-1.1.1-py2.py3-none-any.whl (94kB)
Collecting Werkzeug>=0.15 (from flask)
Downloading https://files.pythonhosted.org/packages/ce/42/3aeda98f96e85fd26180534d36570e4d18108d62ae36f87694b476b83d6f/Werkzeug-0.16.0-py2.py3-none-any.whl (327kB)
Requirement already satisfied: Jinja2>=2.10.1 in /home/graph/workspace/summit-t11HHuu-/lib/python3.7/site-packages (from flask) (2.10.1)
Collecting click>=5.1 (from flask)
Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
Collecting itsdangerous>=0.24 (from flask)
Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Requirement already satisfied: MarkupSafe>=0.23 in /home/graph/workspace/summit-t11HHuu-/lib/python3.7/site-packages (from Jinja2>=2.10.1->flask) (1.1.1)
Installing collected packages: Werkzeug, click, itsdangerous, flask
Successfully installed Werkzeug-0.16.0 click-7.0 flask-1.1.1 itsdangerous-1.1.0
Adding flask to Pipfile's [packages]…
Pipfile.lock (9469c8) out of date, updating to (7786c0)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (7786c0)!
Installing dependencies from Pipfile.lock (7786c0)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 17/17 — 00:00:03

 Testen der installationen

(summit-t11HHuu-) graph@buster:~/workspace/summit$ python
Python 3.7.3 (default, Apr 3 2019, 05:39:12)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
>>> import bokeh
>>> import flask
>>>

Wenn alles bis hierher gut gelaufen ist, sollten Sie sich einen Kaffee mit einem süßen Teilchen Ihrer Wahl zur Belohung gönnen.

 

Nun frisch gestärkt zum summit Beispiel Code:

Code herunterladen:

 Wie empfehlen die git-Methode:

Git installieren:

(summit-t11HHuu-) graph@buster:~/workspace/summit$ su -
Passwort:
root@buster:~#
root@buster:~#
root@buster:~# aptitude install git
Die folgenden NEUEN Pakete werden zusätzlich installiert:
git git-man{a} liberror-perl{a}
0 Pakete aktualisiert, 3 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
7.272 kB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 37,9 MB zusätzlich belegt sein.
Möchten Sie fortsetzen? [Y/n/?]
Holen: 1 http://debian.inf.tu-dresden.de/debian buster/main amd64 liberror-perl all 0.17027-2 [30,9 kB]
Holen: 2 http://debian.inf.tu-dresden.de/debian buster/main amd64 git-man all 1:2.20.1-2 [1.619 kB]
Holen: 3 http://debian.inf.tu-dresden.de/debian buster/main amd64 git amd64 1:2.20.1-2 [5.621 kB]
7.272 kB wurden in 1 s heruntergeladen (6.975 kB/s)
Vormals nicht ausgewähltes Paket liberror-perl wird gewählt.
(Lese Datenbank ... 41519 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../liberror-perl_0.17027-2_all.deb ...
Entpacken von liberror-perl (0.17027-2) ...
Vormals nicht ausgewähltes Paket git-man wird gewählt.
Vorbereitung zum Entpacken von .../git-man_1%3a2.20.1-2_all.deb ...
Entpacken von git-man (1:2.20.1-2) ...
Vormals nicht ausgewähltes Paket git wird gewählt.
Vorbereitung zum Entpacken von .../git_1%3a2.20.1-2_amd64.deb ...
Entpacken von git (1:2.20.1-2) ...
liberror-perl (0.17027-2) wird eingerichtet ...
git-man (1:2.20.1-2) wird eingerichtet ...
git (1:2.20.1-2) wird eingerichtet ...
Trigger für man-db (2.8.5-2) werden verarbeitet ...
 
root@buster:~# Abgemeldet
(summit-t11HHuu-) graph@buster:~/workspace/summit$

Code runterladen:

(summit-t11HHuu-) graph@buster:~/workspace/summit$ git clone https://github.com/Inqbus/summit2018.git
Klone nach 'summit2018' ...
remote: Enumerating objects: 71, done.
remote: Total 71 (delta 0), reused 0 (delta 0), pack-reused 71
Entpacke Objekte: 100% (71/71), Fertig.

Alternativ Per ZIP-File

(summit-t11HHuu-) graph@buster:~/workspace/summit/summit2018$ su -
Passwort:
root@buster:~# aptitude install unzip
Die folgenden NEUEN Pakete werden zusätzlich installiert:
unzip
0 Pakete aktualisiert, 1 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
172 kB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 580 kB zusätzlich belegt sein.
Holen: 1 http://debian.inf.tu-dresden.de/debian buster/main amd64 unzip amd64 6.0-23+deb10u1 [172 kB]
172 kB wurden in 0 s heruntergeladen (1.052 kB/s)
Vormals nicht ausgewähltes Paket unzip wird gewählt.
(Lese Datenbank ... 42446 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../unzip_6.0-23+deb10u1_amd64.deb ...
Entpacken von unzip (6.0-23+deb10u1) ...
unzip (6.0-23+deb10u1) wird eingerichtet ...
Trigger für mime-support (3.62) werden verarbeitet ...
Trigger für man-db (2.8.5-2) werden verarbeitet ...

root@buster:~# Abgemeldet

(test) volker@paddy:~/workspace/summit$ wget https://github.com/Inqbus/summit2018/archive/master.zip
(test) volker@paddy:~/workspace/summit$ unzip master.zip
(test) volker@paddy:~/workspace/summit$ mv summit2018-master summit2018

Daten herunterladen:

(summit-t11HHuu-) graph@buster:~/workspace/summit/python_summit su -
Passwort:
root@buster:~# aptitude install unzip
Die folgenden NEUEN Pakete werden zusätzlich installiert:
unzip
0 Pakete aktualisiert, 1 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
172 kB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 580 kB zusätzlich belegt sein.
Holen: 1 http://debian.inf.tu-dresden.de/debian buster/main amd64 unzip amd64 6.0-23+deb10u1 [172 kB]
172 kB wurden in 0 s heruntergeladen (1.052 kB/s)
Vormals nicht ausgewähltes Paket unzip wird gewählt.
(Lese Datenbank ... 42446 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../unzip_6.0-23+deb10u1_amd64.deb ...
Entpacken von unzip (6.0-23+deb10u1) ...
unzip (6.0-23+deb10u1) wird eingerichtet ...
Trigger für mime-support (3.62) werden verarbeitet ...
Trigger für man-db (2.8.5-2) werden verarbeitet ...

root@buster:~# Abgemeldet(test) volker@paddy:~/workspace/summit$ cd summit2019
(summit-t11HHuu-) graph@buster:~/workspace/summit/summit2018$ wget http://quantquote.com/files/quantquote_daily_sp500_83986.zip
--2019-10-01 15:13:22-- http://quantquote.com/files/quantquote_daily_sp500_83986.zip
Auflösen des Hostnamens quantquote.com (quantquote.com)… 104.130.231.164
Verbindungsaufbau zu quantquote.com (quantquote.com)|104.130.231.164|:80 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 36616638 (35M) [application/zip]
Wird in »quantquote_daily_sp500_83986.zip« gespeichert.

quantquote_daily_sp500_83986.zip 100%[==============================================================================================>] 34,92M 1,67MB/s in 9,8s

2019-10-01 15:13:32 (3,55 MB/s) - »quantquote_daily_sp500_83986.zip« gespeichert [36616638/36616638]

(summit-t11HHuu-) graph@buster:~/workspace/summit/python_summit$ unzip quantquote_daily_sp500_83986.zip


 Nun sollte alles so aussehen:

(summit-t11HHuu-) graph@buster:~/workspace/summit/python_summit$ ll
insgesamt 35844
-rw-r--r-- 1 graph graph 2406 Okt 1 15:17 download_sample_data.py
drwxr-xr-x 3 graph graph 4096 Okt 1 15:17 embed_server
drwxr-xr-x 3 graph graph 4096 Okt 1 15:17 embed_static
drwxr-xr-x 3 graph graph 4096 Okt 1 15:17 flask_demo
-rw-r--r-- 1 graph graph 1063 Okt 1 15:17 LICENSE
drwxr-xr-x 3 graph graph 4096 Sep 15 2014 quantquote_daily_sp500_83986
-rw-r--r-- 1 graph graph 36616638 Sep 15 2014 quantquote_daily_sp500_83986.zip
-rw-r--r-- 1 graph graph 1797 Okt 1 15:17 ratelimit.py
-rw-r--r-- 1 graph graph 53 Okt 1 15:17 README.md
-rw-r--r-- 1 graph graph 1346 Okt 1 15:17 slider_fail1.py
-rw-r--r-- 1 graph graph 1644 Okt 1 15:17 slider_fail1_throttle1.py
-rw-r--r-- 1 graph graph 1675 Okt 1 15:17 slider_fail1_throttle2.py
-rw-r--r-- 1 graph graph 1452 Okt 1 15:17 slider_fail2_fixed.py
-rw-r--r-- 1 graph graph 1420 Okt 1 15:17 slider_fail2.py
-rw-r--r-- 1 graph graph 1529 Okt 1 15:17 slider_fail2_throttle.py
-rw-r--r-- 1 graph graph 1692 Okt 1 15:17 slider_fail3.py
-rw-r--r-- 1 graph graph 1693 Okt 1 15:17 slider_fail4.py
-rw-r--r-- 1 graph graph 1217 Okt 1 15:17 slider.py
-rw-r--r-- 1 graph graph 576 Okt 1 15:17 static.py
-rw-r--r-- 1 graph graph 4519 Okt 1 15:17 stocks.py
drwxr-xr-x 2 graph graph 4096 Okt 1 15:17 vortrag

Check der Installation:

Wir installieren aus https://bokeh.pydata.org/en/latest/docs/gallery.html erste Spalte zweiter Plot.

(summit-t11HHuu-) graph@buster:~/workspace/summit/python_summit$ wget https://github.com/bokeh/bokeh/raw/master/examples/app/sliders.py
--2019-10-01 15:24:54-- https://github.com/bokeh/bokeh/raw/master/examples/app/sliders.py
Auflösen des Hostnamens github.com (github.com)… 140.82.118.3
Verbindungsaufbau zu github.com (github.com)|140.82.118.3|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 302 Found
Platz: https://raw.githubusercontent.com/bokeh/bokeh/master/examples/app/sliders.py [folgend]
--2019-10-01 15:24:54-- https://raw.githubusercontent.com/bokeh/bokeh/master/examples/app/sliders.py
Auflösen des Hostnamens raw.githubusercontent.com (raw.githubusercontent.com)… 151.101.12.133
Verbindungsaufbau zu raw.githubusercontent.com (raw.githubusercontent.com)|151.101.12.133|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 2030 (2,0K) [text/plain]
Wird in »sliders.py« gespeichert.

sliders.py 100%[==============================================================================================>] 1,98K --.-KB/s in 0s

2019-10-01 15:24:55 (39,9 MB/s) - »sliders.py« gespeichert [2030/2030]

(test) graph@buster:~/workspace/test$ bokeh serve sliders.py 
2018-09-20 23:33:40,624 Starting Bokeh server version 0.13.0 (running on Tornado 5.1.1)
2018-09-20 23:33:40,626 Bokeh app running at: http://localhost:5006/sliders
2018-09-20 23:33:40,626 Starting Bokeh server with process id: 6791

Gehen Sie mit Ihrem Browser auf

http://localhost:5006/sliders

dort sollte die interaktive Grafik nun zu sehen und nutzen sein.

Installation erfolgreich abgeschlossen!

 

Realitäts-Check:

Wenn das bisher für Sie ein Spaziergang war ist alles OK.Wenn nicht, dann fehlen Ihnen grundlegende OS/Python Techniken. Diese werden Sie im Workshop nicht erlernen können. Nutzen Sie daher jede freie Minute um sich vorzubereiten! Scheuen Sie sich nicht mich zu kontaktieren, wenn Sie feststecken!

Benötigtes Vorwissen

Schauen Sie sich das Tutorial von Bokeh an. Probieren Sie mit der installierten Software ob sie einzelne Beispiele aus der Bokeh-Gallery durchspielen können.

Optionales Wissen

Schauen Sie sich das Tutorial von Bokeh-Server an. Probieren Sie Bokeh-Server an Beispielen aus.
Für den Teil mit Bokeh-Server sind Vorkenntnisse mit Flask von großem Vorteil. Es genügt völlig in der Lage zu sein mit Flask eine Hello-World Flask-Anwendung mit einem Template bauen zu können.

Weitere Software/Skills

  • Sie benötigen neben Ihrem Lieblings-Browser einen zweiten. Ich nutze z.B: Firefox und Chromium. In einer VM habe ich  zusätzlich IE und Edge um die Windows-Kompatibilität - ächz - zu überprüfen.
  • Lernen Sie das JS-Debuggins der Browser - Sie werden es brauchen.

Schlusswort

Entschuldigung, wenn das alles so exklusiv klingt. Ich möchte niemand von meinem Workshop ausschließen. Auch ohne ein funktionierendes Python-Environment wird man so viel über Interaktive Webgrafiken lernen, dass es die aufgewendete Zeit wert ist. Ich möchte aber niemanden der meinen Workshop machen will entäuschen, der dann doch lieber den Parallel-Workshop über Python Wattebäuschchen hätte machen wollen.