WEBVTT

00:00:00.200 --> 00:00:03.920
Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python Podcast Episode 51.

00:00:05.240 --> 00:00:07.160
Wir hatten eine relativ lange Sommerpause.

00:00:07.640 --> 00:00:08.440
Ja, ungeplant.

00:00:08.960 --> 00:00:11.700
Ungeplant, war ein bisschen, sorry, was dazwischen gekommen ist.

00:00:11.700 --> 00:00:12.940
Wir haben uns auch schon viele Leute geschrieben.

00:00:12.980 --> 00:00:13.000
Wir haben uns auch schon viele Leute geschrieben.

00:00:13.000 --> 00:00:13.260
Wir haben uns auch schon viele Leute geschrieben.

00:00:13.620 --> 00:00:14.680
Ja, liebe Grüße.

00:00:15.400 --> 00:00:18.820
Genau, danke für die Erinnerung, dass wir mal irgendwie wieder was machen sollen.

00:00:19.340 --> 00:00:23.460
Wir wollen heute über Environment Management und Packaging sprechen und wir haben die Annalena heute sogar.

00:00:23.640 --> 00:00:24.240
Hallo Annalena.

00:00:24.340 --> 00:00:24.520
Ja, hallo.

00:00:24.740 --> 00:00:25.340
Hi ihr beiden.

00:00:26.000 --> 00:00:27.440
Magst du kurz was über dich erzählen vielleicht?

00:00:27.500 --> 00:00:28.100
Vielleicht fangen wir so an.

00:00:28.100 --> 00:00:42.840
Ja, na klar. Genau, mein Name ist Annalena Popkes. Ich arbeite als Machine Learning Engineer bei einem deutschen Unternehmen, das nennt sich Innovex und bin da in verschiedenen Kundenprojekten unterwegs. Je nachdem, was der Kunde möchte, mache ich verschiedene Dinge, manchmal auch reines Data Engineering.

00:00:42.840 --> 00:01:06.360
jetzt gerade bin ich bei Bubble, das ist ein Unternehmen, was Sprachen beibringt, kennt ihr vielleicht auch schon, habt ihr vielleicht selbst schon mal benutzt und ich arbeite da im Speech Recognition Team und helfe da dem Team dabei, ihre Software weiterzuentwickeln, produktiv zu nehmen und was da alles so dazu kommt.

00:01:06.360 --> 00:01:08.220
Oh ja, sehr cool. Klingt echt

00:01:08.220 --> 00:01:10.020
total interessant, ja. Finde ich gut.

00:01:10.560 --> 00:01:12.620
Ist super spannend, ja. Ist auch ein ganz

00:01:12.620 --> 00:01:14.340
interessantes Unternehmen, finde ich, wenn man dann

00:01:14.340 --> 00:01:16.540
mal an etwas mitarbeitet, was

00:01:16.540 --> 00:01:18.480
auch wirklich beim User Verwendung

00:01:18.480 --> 00:01:20.480
findet. Das ist sehr unterschiedlich, was man da für

00:01:20.480 --> 00:01:21.360
Kundenprojekte hat.

00:01:22.420 --> 00:01:24.400
Ja, was passiert mit dem Code, den man

00:01:24.400 --> 00:01:26.380
da so schreibt und das finde ich

00:01:26.380 --> 00:01:26.800
total

00:01:26.800 --> 00:01:30.280
rewarding, also dass es einem viel zurückgibt

00:01:30.280 --> 00:01:32.240
an etwas mitzuarbeiten, was man auch vielleicht

00:01:32.240 --> 00:01:33.140
selbst schon mal benutzt hat.

00:01:34.020 --> 00:01:35.320
Ja, stimmt, das ist gut.

00:01:36.360 --> 00:01:39.460
und dabei bist du auch über Environment Management Packaging

00:01:39.460 --> 00:01:42.340
gestoßen oder gestolpert oder ist das ein Hobby von dir?

00:01:43.480 --> 00:01:45.520
Nee, das war bei einem vorherigen

00:01:45.520 --> 00:01:48.000
Kundenprojekt, da wurde ich gefragt, also Packaging ist ja

00:01:48.000 --> 00:01:51.420
sehr präsent, wenn man viel mit Python macht und

00:01:51.420 --> 00:01:54.100
dementsprechend ist mir das schon vorher begegnet, aber ich habe mich da noch nie so wirklich

00:01:54.100 --> 00:01:57.400
reingearbeitet gehabt, aber in einem vorherigen Kundenprojekt

00:01:57.400 --> 00:02:00.320
wurde ich dann mal gefragt, welches Packaging-Tool sollen wir denn benutzen?

00:02:00.780 --> 00:02:02.900
Es gibt ja so viele und dann

00:02:02.900 --> 00:02:06.320
hatte ich angefangen, mich mal ein bisschen reinzulesen

00:02:06.320 --> 00:02:10.260
und dachte, boah, ich finde wirklich viele Blogartikel zu den einzelnen Tools,

00:02:10.360 --> 00:02:14.820
aber ich finde nicht so wirklich einen Artikel, der die verschiedenen Tools zusammenfasst,

00:02:14.880 --> 00:02:20.700
mal kurz erklärt, was sie können, wozu sie geeignet sind und das Ganze vernünftig kategorisiert,

00:02:20.820 --> 00:02:25.000
vor allem ohne diese persönliche Präferenz reinzubringen, die man ganz viel findet,

00:02:25.080 --> 00:02:29.160
die ich auch ganz viel unter Kollegen halt bemerkt habe, dass manche sagen,

00:02:29.260 --> 00:02:33.120
ja, Poetry auf keinen Fall will ich nicht benutzen, die haben da mal so ein Release rausgebracht

00:02:33.120 --> 00:02:35.200
und der hat total viel kaputt gemacht und

00:02:35.200 --> 00:02:37.360
nee, das mache ich jetzt kategorisch

00:02:37.360 --> 00:02:38.400
nicht mehr. Das sagst du Jochen auch.

00:02:38.720 --> 00:02:41.220
Ich benutze es noch. Wir hauen uns da im Karten.

00:02:42.800 --> 00:02:43.140
Und

00:02:43.140 --> 00:02:45.060
dementsprechend dachte ich dann, okay, jetzt wird es mal Zeit.

00:02:45.440 --> 00:02:47.020
Das ist eine gute Möglichkeit, mich da mal

00:02:47.020 --> 00:02:49.000
tiefer reinzuarbeiten, da auch einen Talk zuzumachen

00:02:49.000 --> 00:02:50.080
und einen Blog zu schreiben,

00:02:50.760 --> 00:02:52.440
einen Blogpost zu schreiben und das habe ich dann gemacht.

00:02:53.240 --> 00:02:55.000
Und das hat erstaunlich viel Anklang gefunden,

00:02:55.300 --> 00:02:56.820
wobei, wenn man jetzt so darüber nachdenkt,

00:02:56.900 --> 00:02:58.920
wahrscheinlich gar nicht so erstaunlich, weil das ein Problem ist,

00:02:58.920 --> 00:03:00.240
was so viele Leute betrifft.

00:03:00.640 --> 00:03:02.180
Und das Ganze...

00:03:02.180 --> 00:03:03.880
Also ich würde auch sagen, das ist so das Hauptproblem, wenn ich

00:03:03.880 --> 00:03:06.080
auch einen Neuling oder sowas versuche, Python

00:03:06.080 --> 00:03:08.000
beizubringen oder irgendwas zu zeigen,

00:03:08.860 --> 00:03:10.060
das ist immer eine große Hürde, bis

00:03:10.060 --> 00:03:12.020
erstmal alles läuft und bis man irgendwelche Environments

00:03:12.020 --> 00:03:14.060
erstellen kann und so weiter. Und jetzt reden wir

00:03:14.060 --> 00:03:15.680
ja noch nicht über Packaging, aber einfach nur dieses

00:03:15.680 --> 00:03:17.560
Environment-Setup in Python ist so ein bisschen

00:03:17.560 --> 00:03:18.720
nervig.

00:03:19.860 --> 00:03:22.240
Nicht nur ein bisschen, sondern sogar ziemlich nervig.

00:03:23.200 --> 00:03:24.180
Ja, ich bin ja auch

00:03:24.180 --> 00:03:25.900
tatsächlich da auf deine Meinung sehr gespannt

00:03:25.900 --> 00:03:28.020
hinterher, auf deine persönliche Präferenz, was du

00:03:28.020 --> 00:03:30.080
sagst, was am besten funktioniert.

00:03:30.320 --> 00:03:32.100
Aber ich finde es cool, dass wir diese

00:03:32.100 --> 00:04:02.080
und PyTest.

00:04:02.100 --> 00:04:03.440
also seit letztem Mal

00:04:03.440 --> 00:04:05.620
PyDentic Version 2

00:04:05.620 --> 00:04:08.140
ist raus, inzwischen sogar 2.4

00:04:08.140 --> 00:04:10.100
Wir haben ja auch die ganzen Europe-Python-News noch nicht gemacht

00:04:10.100 --> 00:04:11.980
Ja, richtig, eine ganze Menge

00:04:11.980 --> 00:04:14.240
und genau, da habe ich

00:04:14.240 --> 00:04:16.320
jetzt auch letztens ein Projekt umgestellt

00:04:16.320 --> 00:04:17.980
ich wollte es eigentlich nur updaten und dann

00:04:17.980 --> 00:04:20.760
hat das halt irgendwie nicht so gut funktioniert

00:04:20.760 --> 00:04:22.280
An PyDentic 2 ist jetzt, dass dieses Rust-Core

00:04:22.280 --> 00:04:24.380
das halt vorher PyDentic-Core war

00:04:24.380 --> 00:04:25.980
also als Extralibrary jetzt mit drin ist

00:04:25.980 --> 00:04:27.580
direkt in PyDentic selbst

00:04:27.580 --> 00:04:29.460
Ja, genau

00:04:29.460 --> 00:04:30.680
Das heißt jetzt auch schnell

00:04:30.680 --> 00:05:00.660
Das ist jetzt...

00:05:00.680 --> 00:05:08.280
und es gibt jetzt eine Firma hinter PyDentic und die hat auch irgendwie, glaube ich, von Sequoia oder so ordentlich Venture-Craft-Weltbekommen.

00:05:09.340 --> 00:05:11.260
Das habt ihr, glaube ich, erwähnt in der letzten Episode.

00:05:11.260 --> 00:05:12.320
Hatten wir schon erwähnt, achso gut.

00:05:12.900 --> 00:05:13.760
Habt ihr schon erwähnt, ja.

00:05:14.860 --> 00:05:20.560
Okay, aber die Entwicklung geht da jetzt auch deutlich schneller und genau, das Update, das ich dann jetzt probiert habe, war aber nicht so reibungslos.

00:05:21.560 --> 00:05:24.180
Das war richtig übel, das hat deutlich länger gedauert, als ich so gedacht hätte.

00:05:25.140 --> 00:05:30.420
Und das lag dann letztlich daran, ich meine, das ist halt auch so ein Ding, das kann dann passieren, wenn man Dinge ändert.

00:05:30.420 --> 00:05:32.480
oder halt halt irgendwie, früher war es halt so,

00:05:32.640 --> 00:05:33.980
dass wenn man bei einer

00:05:33.980 --> 00:05:36.980
bei so einem Feld

00:05:36.980 --> 00:05:37.980
gesagt hat, typing any,

00:05:38.560 --> 00:05:40.400
dann war das defaultmäßig none.

00:05:42.640 --> 00:05:43.040
Und

00:05:43.040 --> 00:05:44.480
das ist es jetzt nicht mehr.

00:05:44.580 --> 00:05:46.540
Jetzt kriegt man einen Fehler und das

00:05:46.540 --> 00:05:47.760
sagt halt irgendwie, du hast da

00:05:47.760 --> 00:05:49.520
einen Wert nicht gesetzt.

00:05:51.320 --> 00:05:52.560
Und dann runterkommen aber die

00:05:52.560 --> 00:05:54.380
anderen Variablen und dann hatte ich das irgendwie falsch

00:05:54.380 --> 00:05:56.440
einsortiert und bin dann irgendwie falsch

00:05:56.440 --> 00:05:58.180
abgebogen. Dann musste ich halt irgendwie, weil

00:05:58.180 --> 00:06:00.000
es hat sich ja noch ganz viel anderes geändert.

00:06:00.000 --> 00:06:03.860
Ich dachte so, welche Änderung hat das jetzt verursacht, dass ich da jetzt immer einen Fehler kriege?

00:06:04.240 --> 00:06:07.480
Und ich habe wirklich lange suchen müssen, bis ich das rausgekriegt habe, dass das der Grund war.

00:06:07.600 --> 00:06:09.060
Manche Sachen sind gemein, die beißen einen.

00:06:09.620 --> 00:06:12.580
Ja, das war schon, dachte ich so, ja.

00:06:12.980 --> 00:06:17.580
Aber im Grunde ist das natürlich eine tolle Sache, dass das jetzt irgendwie alles auch schnell funktioniert und so.

00:06:18.420 --> 00:06:24.080
Ja, aber ich werde wahrscheinlich noch ein bisschen brauchen, bis ich alle Sachen, die ich bei der Intake verwende, da umgezogen habe.

00:06:25.420 --> 00:06:26.220
Benutzt du das auch in Django?

00:06:26.220 --> 00:06:29.580
Ja, ich benutze es in Django-Projekten

00:06:29.580 --> 00:06:31.460
teilweise auch, wenn halt vor allen Dingen

00:06:31.460 --> 00:06:33.720
Daten von außen irgendwie kommen, um die halt zu validieren

00:06:33.720 --> 00:06:35.600
verwende ich das halt, also wenn es halt nicht

00:06:35.600 --> 00:06:37.880
über quasi Django REST-Framework geht

00:06:37.880 --> 00:06:39.700
Genau, ich wollte gerade sagen, das ist kein Django REST-Framework

00:06:39.700 --> 00:06:41.120
Doch, also für

00:06:41.120 --> 00:06:44.160
so REST-APIs nehme ich normalerweise Django REST-Framework

00:06:44.160 --> 00:06:45.780
aber manchmal kommen Daten ja auch

00:06:45.780 --> 00:06:47.040
von woanders und dann

00:06:47.040 --> 00:06:48.940
nehme ich schon ein paar Identik

00:06:48.940 --> 00:06:51.700
Aber da gab es ja auch ein paar News von, ich glaube REST-Framework wird irgendwann

00:06:51.700 --> 00:06:53.380
duplicated und nach Django reinwandern

00:06:53.380 --> 00:06:54.600
irgendwie jetzt mit 5 sogar schon

00:06:54.600 --> 00:06:57.040
Ja, das weiß ich noch nicht

00:06:57.040 --> 00:06:58.580
also die Kerngeschichten

00:06:58.580 --> 00:07:00.220
wandern in

00:07:00.220 --> 00:07:02.120
in Django selber rein

00:07:02.120 --> 00:07:04.840
ja, also

00:07:04.840 --> 00:07:05.680
quasi das

00:07:05.680 --> 00:07:07.860
Encoding-Geschichten

00:07:07.860 --> 00:07:10.300
also es gibt

00:07:10.300 --> 00:07:12.900
ja, größere Teile

00:07:12.900 --> 00:07:14.720
die in Django jetzt selber sind und dann könnte man

00:07:14.720 --> 00:07:16.640
halt sowas wie Django Rest Framework relativ leicht

00:07:16.640 --> 00:07:18.280
in Django selber reinpacken

00:07:18.280 --> 00:07:20.480
aber Django Rest Framework selber glaube ich

00:07:20.480 --> 00:07:22.820
kommt nicht, also mit allem was so dranhängt auch nicht rein

00:07:22.820 --> 00:07:24.280
weil das ist halt auch so riesig

00:07:24.280 --> 00:07:25.880
Ja, vielleicht aber natürlich keine Sache, ne?

00:07:25.940 --> 00:07:27.920
Also man bräuchte es wahrscheinlich dann gar nicht mehr, wenn man nur so einfach

00:07:27.920 --> 00:07:28.420
eine Sache macht.

00:07:28.620 --> 00:07:30.020
Genau, das ist halt, ja.

00:07:30.140 --> 00:07:32.460
Insbesondere wenn man dann diese PyTentic-Validation macht oder sowas, ja.

00:07:33.120 --> 00:07:33.480
Ja, ja.

00:07:33.740 --> 00:07:34.860
Also das ist auch noch interessant.

00:07:35.040 --> 00:07:37.340
Also es gibt ja dieses Django Ninja oder so.

00:07:38.220 --> 00:07:39.400
Ja, okay, das ist komisch.

00:07:39.820 --> 00:07:39.980
Ja?

00:07:40.140 --> 00:07:40.920
Ja, ich finde schon.

00:07:41.260 --> 00:07:41.540
Okay.

00:07:42.360 --> 00:07:44.500
Ja, das habe ich auch noch nicht verwendet, also müsste ich mal vielleicht.

00:07:45.460 --> 00:07:49.080
Ja, ansonsten, was habe ich denn noch so?

00:07:49.140 --> 00:07:51.640
Ach ja, die LLM-Geschichte, das war ja die vorletzte Episode.

00:07:51.880 --> 00:07:52.040
Ja.

00:07:52.040 --> 00:07:53.960
Da haben wir uns also quasi gerade mit beschäftigt.

00:07:54.280 --> 00:07:56.360
die eskaliert auch immer noch so munter

00:07:56.360 --> 00:07:57.880
vor sich hin und wird immer

00:07:57.880 --> 00:08:00.180
da gibt es auch jede Menge Neuigkeiten

00:08:00.180 --> 00:08:02.420
kann man auch nicht alles abdecken, ist einfach so viel was da passiert

00:08:02.420 --> 00:08:04.060
aber eine

00:08:04.060 --> 00:08:06.040
wichtige neue

00:08:06.040 --> 00:08:07.780
Geschichte die da passiert ist halt

00:08:07.780 --> 00:08:10.240
irgendwie, das will ich mir unbedingt angucken, hab es noch nicht

00:08:10.240 --> 00:08:12.300
geschafft, aber was man jetzt machen kann

00:08:12.300 --> 00:08:14.400
ist halt tatsächlich irgendwie

00:08:14.400 --> 00:08:15.920
mit Lama 2

00:08:15.920 --> 00:08:17.800
was halt jetzt richtig offiziell irgendwie

00:08:17.800 --> 00:08:19.940
dafür

00:08:19.940 --> 00:08:22.280
gedacht ist, dass man damit Dinge machen kann

00:08:22.280 --> 00:08:24.120
das kann man halt super feintunen

00:08:24.120 --> 00:08:25.980
gerade die kleineren Modelle kann man super feintunen

00:08:25.980 --> 00:08:27.940
auf irgendwelche Probleme und dann braucht man halt nur ein paar tausend

00:08:27.940 --> 00:08:29.320
Beispiele für irgendwas und

00:08:29.320 --> 00:08:32.000
kann da halt dann, ohne dass man

00:08:32.000 --> 00:08:33.980
die Daten zu OpenAI schickt oder sonst irgendwo hin

00:08:33.980 --> 00:08:35.760
irgendwie Dinge damit machen.

00:08:36.240 --> 00:08:37.620
Mit guten Ergebnissen. Mit sehr guten Ergebnissen.

00:08:37.960 --> 00:08:39.720
Es gibt ganz viele Leute, die davon total schwärmen

00:08:39.720 --> 00:08:42.000
und die sagen, das ist total super. Irgendwie, wenn du

00:08:42.000 --> 00:08:43.300
da in der Richtung irgendwas machen kannst,

00:08:44.020 --> 00:08:45.960
lass alles stehen und liegen und mach das,

00:08:46.060 --> 00:08:47.260
weil das ist halt so großartig.

00:08:48.260 --> 00:08:49.080
Daher, ja.

00:08:49.660 --> 00:08:50.260
Hab ich mir auch schon gedacht,

00:08:50.260 --> 00:08:54.000
ich würde gern

00:08:54.000 --> 00:08:55.060
Naja

00:08:55.060 --> 00:08:59.520
Weißt du, was ich rausgefunden habe, wofür man LLMs noch wunderbar benutzen kann, wo ich sehr überrascht war?

00:09:00.620 --> 00:09:01.060
Ne, sag mal

00:09:01.060 --> 00:09:02.180
Musiktipps

00:09:02.180 --> 00:09:03.400
Musiktipps?

00:09:03.400 --> 00:09:04.660
Ja, das fand ich hervorragend

00:09:04.660 --> 00:09:07.300
Also fast mit das Beste, was du hast

00:09:07.300 --> 00:09:10.240
Du hörst irgendwas Schönes und gibst dann halt so das, was du magst

00:09:10.240 --> 00:09:13.180
Aber als Kontext, wenn du sagst, hey, ich höre das und das gerne, hast du ein paar gute Tipps

00:09:13.180 --> 00:09:14.740
Und was rauskommt, also ich fand die Tipps hervorragend

00:09:14.740 --> 00:09:16.760
Ich habe so ein paar Sachen gefunden, die ich noch nicht kannte und so

00:09:16.760 --> 00:09:19.880
Cool, habe ich noch nicht verwendet, aber klingt gut

00:09:19.880 --> 00:09:20.780
Muss ich mal probieren

00:09:20.780 --> 00:09:22.920
Ich glaube, dazu gab es tatsächlich sogar einen Talk

00:09:22.920 --> 00:09:24.600
genau mit der Topic bei Europython.

00:09:24.620 --> 00:09:24.880
Ach, echt?

00:09:25.540 --> 00:09:27.220
LLMs for Music Recommendation.

00:09:27.620 --> 00:09:28.300
Ach, witzig.

00:09:28.800 --> 00:09:30.480
Ich dachte gerade, du hättest den gehört.

00:09:30.560 --> 00:09:31.540
Nein, habe ich tatsächlich nicht gesehen.

00:09:31.700 --> 00:09:32.600
Sonst hätte ich den auch jetzt empfohlen.

00:09:32.700 --> 00:09:34.000
Aber den habe ich tatsächlich verpasst.

00:09:35.020 --> 00:09:38.140
Die sind jetzt alle auf YouTube seit einer Woche, glaube ich.

00:09:38.440 --> 00:09:38.760
Ah, gut.

00:09:40.200 --> 00:09:42.160
Okay, also auch noch, das muss auf jeden Fall auch nicht shownoten.

00:09:42.340 --> 00:09:45.020
Dann können wir nochmal die Europython-Talks verlinken.

00:09:45.900 --> 00:09:46.020
Ja.

00:09:47.740 --> 00:09:49.260
Genau, ansonsten, ja.

00:09:49.260 --> 00:10:16.480
Ja, Postgres 16 ist raus, ist jetzt zwar nicht so wirklich was mit Python zu tun, aber vielleicht, die meisten Leute dürften ja auch irgendwie den Datenbank verwenden und viele verwenden wahrscheinlich Postgres und da habe ich jetzt auch meine ganzen Geschichten geupdatet und das ging auch problemlos, also von 15 nach 16, wenn der PG-Upgrade einfach drüber laufen lässt, das hat einfach immer so funktioniert, auch mit 14, also es war ein sehr problemloses Update für mich.

00:10:16.480 --> 00:10:18.680
und hat auch

00:10:18.680 --> 00:10:19.780
eine Menge nette Sachen drin.

00:10:21.240 --> 00:10:21.720
Ansonsten

00:10:21.720 --> 00:10:24.520
weiß nicht, habt ihr vielleicht noch

00:10:24.520 --> 00:10:26.620
irgendwas, was euch einfällt, was man mal

00:10:26.620 --> 00:10:28.800
erwähnen könnte, was in letzter Zeit Interessantes passiert ist?

00:10:30.460 --> 00:10:32.480
Ich bekomme vor allem durch die Arbeit viel mit

00:10:32.480 --> 00:10:34.240
über die Large-Language-Modelle,

00:10:34.600 --> 00:10:36.600
aber du hast ja auch gerade gesagt, das springt

00:10:36.600 --> 00:10:38.520
absolut den Rahmen. Wir haben da auch

00:10:38.520 --> 00:10:40.480
einen Channel zu bei der Arbeit und da

00:10:40.480 --> 00:10:42.520
sind täglich mehrere Posts, also da kommt man

00:10:42.520 --> 00:10:44.020
überhaupt nicht hinterher, wieder

00:10:44.020 --> 00:10:46.360
sich das alles anzulesen, noch

00:10:46.360 --> 00:11:16.340
und PyTest.

00:11:16.360 --> 00:11:18.500
erwiesen haben, sich das dann nochmal anzugucken.

00:11:19.260 --> 00:11:19.880
Ich weiß es nicht.

00:11:20.860 --> 00:11:21.260
Schwierig.

00:11:21.820 --> 00:11:22.220
Schwierig.

00:11:23.540 --> 00:11:23.740
Ja.

00:11:26.320 --> 00:11:27.540
Ja gut, aber ansonsten.

00:11:27.840 --> 00:11:30.260
Ja, meine News sind alle gerade nicht so technisch

00:11:30.260 --> 00:11:32.180
da, deswegen skippen wir die für heute einfach mal.

00:11:32.320 --> 00:11:32.540
Okay.

00:11:33.640 --> 00:11:36.040
Ja, dann können wir ja eigentlich direkt zum Thema

00:11:36.040 --> 00:11:37.500
übergehen, nahtlos.

00:11:37.660 --> 00:11:39.220
Wollen wir mit Environment anfangen oder mit Packaging?

00:11:39.540 --> 00:11:40.300
Ich würde sagen Environment, oder?

00:11:41.260 --> 00:11:42.480
Hätte ich auch gesagt, ja.

00:11:43.160 --> 00:11:43.560
Okay.

00:11:43.560 --> 00:11:45.700
Wollt ihr auch über das Python

00:11:45.700 --> 00:11:47.720
Version Management reden? Das hatte ich auch als

00:11:47.720 --> 00:11:49.740
Kategorie noch aufgenommen. Ja, also Fintech gehört auch

00:11:49.740 --> 00:11:51.520
dazu und das überschneidet sich ja teilweise auch, weil auch

00:11:51.520 --> 00:11:53.620
PyEnv ja Virtual Environments macht und so, wenn man

00:11:53.620 --> 00:11:54.120
will.

00:11:55.280 --> 00:11:57.580
PyEnv ist vielleicht ein guter Anstieg, also weil

00:11:57.580 --> 00:11:59.620
ich würde tatsächlich mit PyEnv

00:11:59.620 --> 00:12:01.700
wahrscheinlich anfangen auf so einem System,

00:12:02.060 --> 00:12:03.540
um Python selber zu installieren.

00:12:04.600 --> 00:12:05.680
Ich würde das halt nicht irgendwie über die

00:12:05.680 --> 00:12:07.360
Website machen, sondern tatsächlich irgendwie versuchen,

00:12:07.440 --> 00:12:09.100
PyEnv irgendwie zu klonen und dann

00:12:09.100 --> 00:12:11.860
in den Pfad zu packen und dann halt

00:12:11.860 --> 00:12:13.980
verschiedene Pythons installieren zu können.

00:12:14.920 --> 00:12:16.400
Das funktioniert ja leider nicht so gut

00:12:16.400 --> 00:12:18.180
auf Windows-Maschinen, sondern halt nur auf

00:12:18.180 --> 00:12:20.200
POSIX. Es gibt aber so

00:12:20.200 --> 00:12:22.000
einen Fork, der das auch für Windows macht,

00:12:22.080 --> 00:12:24.060
der in den letzten Jahren so ein bisschen besser

00:12:24.060 --> 00:12:26.000
geworden ist. Und das ist jetzt einigermaßen

00:12:26.000 --> 00:12:28.020
nutzbar, aber es hat halt nicht so schöne Sachen auch drin,

00:12:28.100 --> 00:12:29.640
wie Minikonda oder sowas,

00:12:30.020 --> 00:12:31.960
was ja bei der POSIX ganz gut funktioniert.

00:12:33.440 --> 00:12:34.260
Ich bin auch

00:12:34.260 --> 00:12:36.460
ganz froh, dass ich meistens mit einer Linux-Maschine

00:12:36.460 --> 00:12:38.380
arbeiten kann und nicht unbedingt

00:12:38.380 --> 00:12:40.280
auf Windows zurückgreifen muss. Da ist es häufig

00:12:40.280 --> 00:12:42.260
ein bisschen leichter alles aufzusetzen.

00:12:42.500 --> 00:12:44.420
Ja, also es ist in den letzten Jahren ein bisschen besser geworden.

00:12:44.500 --> 00:12:45.840
Ich muss das halt recht häufig machen, aber

00:12:45.840 --> 00:12:47.740
es geht mittlerweile.

00:12:48.700 --> 00:12:50.380
Also ja, ich weiß nicht, vielleicht, ich fange ja auch

00:12:50.380 --> 00:12:52.180
an mit PyEnv, also ich würde tatsächlich PyEnv

00:12:52.180 --> 00:12:54.340
installieren und dann mit PyEnv die

00:12:54.340 --> 00:12:56.060
Python-Version installieren, die das

00:12:56.060 --> 00:12:57.060
vorhin gerade haben will.

00:12:58.240 --> 00:13:00.280
Genau. Ich weiß auch

00:13:00.280 --> 00:13:02.360
gar nicht, ob viele Einsteiger

00:13:02.360 --> 00:13:04.280
bei eurem Podcast dabei sind, also vielleicht

00:13:04.280 --> 00:13:06.180
können wir auch immer nochmal sagen, was die

00:13:06.180 --> 00:13:07.020
Tools überhaupt machen.

00:13:07.860 --> 00:13:09.180
So zur Vollständigkeit.

00:13:09.180 --> 00:13:11.220
Sonst sind sie alle wieder direkt aufgeschaltet

00:13:11.220 --> 00:13:14.440
Das Feedback habe ich schon ein paar Mal bekommen

00:13:14.440 --> 00:13:15.480
Das war aber ganz schön schwierig

00:13:15.480 --> 00:13:17.900
Ja, genau, also ich hatte

00:13:17.900 --> 00:13:20.340
am Anfang überlegt, als ich mich mit der Thematik

00:13:20.340 --> 00:13:22.080
beschäftigt habe, ob es Kategorien gibt

00:13:22.080 --> 00:13:24.520
weil bei Python

00:13:24.520 --> 00:13:26.340
gibt es eben unheimlich viele Tools, die alle

00:13:26.340 --> 00:13:28.380
verschiedene Dinge können und die können mehrere Sachen

00:13:28.380 --> 00:13:30.660
und eine bestimmte

00:13:30.660 --> 00:13:32.420
Kategorie ist eben Python Version Management

00:13:32.420 --> 00:13:34.080
sprich, dass man ein Tool hat

00:13:34.080 --> 00:13:36.200
das einem erlaubt, verschiedene Python-Versionen

00:13:36.200 --> 00:13:37.980
herunterzuladen oder zu installieren

00:13:37.980 --> 00:13:40.080
ohne, dass man das manuell machen muss

00:13:40.080 --> 00:13:42.180
und dann, dass man eben auch leicht

00:13:42.180 --> 00:13:44.180
zwischen den Versionen wechseln kann

00:13:44.180 --> 00:13:46.020
und PyEnv ist so

00:13:46.020 --> 00:13:47.900
das bekannteste Tool, glaube ich, dafür

00:13:47.900 --> 00:13:49.920
und auch eins der wenigen Tools, dass das

00:13:49.920 --> 00:13:51.300
wirklich macht. Viele

00:13:51.300 --> 00:13:53.780
die das, also zum Beispiel

00:13:53.780 --> 00:13:56.080
Rye ist so ein Multipurpose-Tool

00:13:56.080 --> 00:13:57.460
was viele verschiedene Dinge kann

00:13:57.460 --> 00:13:59.800
aber sonst, die meisten

00:13:59.800 --> 00:14:02.100
können gut mit PyEnv interagieren

00:14:02.100 --> 00:14:04.040
also man kann beides zusammen nutzen

00:14:04.040 --> 00:14:05.540
aber PyEnv ist, glaube ich, so das Tool

00:14:05.540 --> 00:14:08.320
und auch ziemlich leicht zu benutzen, wenn man es erstmal installiert hat.

00:14:09.000 --> 00:14:12.460
Es gibt einfache Befehle, womit man dann einfach spezifizieren kann.

00:14:12.560 --> 00:14:17.700
Ich möchte gerne Version 3.10.4 und dann installiert es die Version

00:14:17.700 --> 00:14:22.260
und man kann leicht zwischen der und anderen Version hin und her wechseln.

00:14:23.580 --> 00:14:31.600
Ja, also ich brauche es auch genau lokal, wenn ich auf einer Entwicklungsmaschine unterwegs bin.

00:14:32.040 --> 00:14:34.860
Da ist es halt etwas, was ich auch ständig brauche,

00:14:34.860 --> 00:14:36.780
weil viele, also ich arbeite ja auch

00:14:36.780 --> 00:14:38.860
für unterschiedliche Kunden mit unterschiedlichen

00:14:39.720 --> 00:14:40.940
Python-Versionen teilweise

00:14:40.940 --> 00:14:43.120
und wenn man halt ein Virtual Env

00:14:43.120 --> 00:14:44.900
mit einer bestimmten Python-Version

00:14:44.900 --> 00:14:46.720
haben möchte, dann ist halt PyEnv genau das, was man

00:14:46.720 --> 00:14:48.800
an der Stelle haben möchte. Ich glaube, es gibt noch

00:14:48.800 --> 00:14:50.840
ASDF zum Beispiel, das macht das dann halt nicht

00:14:50.840 --> 00:14:52.900
nur für Python, sondern halt auch noch für

00:14:52.900 --> 00:14:54.100
Env, für quasi

00:14:54.100 --> 00:14:56.760
Node.js und für Ruby oder

00:14:56.760 --> 00:14:58.840
sowas. Keine Ahnung,

00:14:58.940 --> 00:15:00.880
habe ich dann nicht probiert, weil den Anwendungsfall

00:15:00.880 --> 00:15:02.800
habe ich so selten, dass ich das nicht brauche.

00:15:02.800 --> 00:15:04.620
und

00:15:04.620 --> 00:15:07.380
genau, es macht halt auch so Dinge wie

00:15:07.380 --> 00:15:09.100
also PyEnf macht auch noch so Sachen wie

00:15:09.100 --> 00:15:11.200
man kann halt Minikonda

00:15:11.200 --> 00:15:13.000
also es gibt ja auch so ganz

00:15:13.000 --> 00:15:15.480
unterschiedliche Python-Ökosysteme

00:15:15.480 --> 00:15:17.620
also je nachdem, also wenn man im Data-Science-

00:15:17.620 --> 00:15:18.800
Umfeld unterwegs ist, da

00:15:18.800 --> 00:15:21.080
ist halt eher so Conda das Tool,

00:15:21.160 --> 00:15:23.040
was man benutzt, um halt Applikigkeiten zu installieren

00:15:23.040 --> 00:15:24.900
und vielleicht will man halt dann eher so die

00:15:24.900 --> 00:15:26.900
Minikonda-Python-Versionen haben

00:15:26.900 --> 00:15:29.020
was wieder was anderes ist als

00:15:29.020 --> 00:15:30.520
diese komplette Anaconda-Distribution,

00:15:30.520 --> 00:15:33.200
Das habe ich auch schon ganz oft gesehen, dass Leute mit der anfangen

00:15:33.200 --> 00:15:35.000
und das dann halt für Sachen

00:15:35.000 --> 00:15:36.920
verwenden, wo ich denke, oh nein, da brauchst du

00:15:36.920 --> 00:15:38.820
eigentlich Minikon da und irgendwie ein Virtual

00:15:38.820 --> 00:15:39.480
App oder so.

00:15:39.680 --> 00:15:42.460
Das ist ein Einstiegspunkt, weil das halt auch

00:15:42.460 --> 00:15:44.760
in der Data-Science-Welt irgendwie sehr empfohlen wird als

00:15:44.760 --> 00:15:45.520
Entry-Point.

00:15:46.600 --> 00:15:49.340
Kann man mit Py einfach die ganzen Dialekte installieren?

00:15:49.540 --> 00:15:51.120
Also sowas wie A-Python oder H-Python

00:15:51.120 --> 00:15:51.560
oder sowas?

00:15:54.220 --> 00:15:55.060
Das weiß ich nicht.

00:15:55.460 --> 00:15:56.900
Also PyPy geht, ich glaube

00:15:56.900 --> 00:15:57.680
Logel geht.

00:15:59.700 --> 00:16:00.060
Aber

00:16:00.060 --> 00:16:30.040
und PyTest.

00:16:30.060 --> 00:16:31.840
Wenn wir schon jetzt bei Conda sind, dann bitte.

00:16:32.900 --> 00:16:33.980
Vielleicht haben wir das einmal so kurz

00:16:33.980 --> 00:16:35.440
so als Elevator.

00:16:35.820 --> 00:16:37.820
Aus meiner Sicht der Hauptunterschied ist, dass

00:16:37.820 --> 00:16:39.720
beim

00:16:39.720 --> 00:16:41.420
Virtual Env,

00:16:41.940 --> 00:16:43.560
bei dem normalen Virtual Env in Python,

00:16:43.840 --> 00:16:45.680
da ist der Interpreter halt nicht mit dabei,

00:16:46.700 --> 00:16:47.620
sondern man verwendet halt,

00:16:47.860 --> 00:16:50.140
alle Virtual Envs verwenden den gleichen Interpreter,

00:16:50.700 --> 00:16:51.920
die halt mit dem gleichen Interpreter

00:16:51.920 --> 00:16:52.400
erzeugt worden sind.

00:16:52.400 --> 00:16:55.080
Ein Virtual Env ist tatsächlich eine

00:16:55.080 --> 00:16:57.560
virtuelle

00:16:57.560 --> 00:16:59.920
Umgebung für das Python für dein eigenes Projekt.

00:17:00.060 --> 00:17:26.940
Ja, also es ist so ein bisschen Magie, dass man die Pfade umbiegt, aber das hat den Effekt, dass man alles, was man da drin, also wenn man jetzt irgendwas mit pip install irgendwas, eine Abhängigkeit installiert, dass die halt nur in dem Environment tatsächlich installiert ist und nicht in allen, die man sonst, also sonst halt nicht, sodass ich halt, wenn man jetzt mehrere Projekte hat, dann kommen die sich ja sonst in die Quere, wenn man halt in dem einen irgendwie, weiß ich nicht, Django 3 hat und im anderen Django 4,

00:17:26.940 --> 00:17:29.100
und die werden

00:17:29.100 --> 00:17:30.060
sozusagen im gleichen

00:17:30.060 --> 00:17:33.080
ja, auf dem gleichen Isolationslevel

00:17:33.080 --> 00:17:34.840
dann würde man ja

00:17:34.840 --> 00:17:37.020
quasi die Abhängigkeiten vom einen kaputt machen, wenn man

00:17:37.020 --> 00:17:39.020
dem anderen was ändert und um das voneinander zu

00:17:39.020 --> 00:17:40.420
isolieren, nimmt man halt Virtual Envs,

00:17:40.800 --> 00:17:42.760
üblicherweise und

00:17:42.760 --> 00:17:44.820
ja, das ist halt sozusagen

00:17:44.820 --> 00:17:46.900
Virtual Env ist so der, die

00:17:46.900 --> 00:17:49.320
leichtgewichtigste Art von Isolation,

00:17:49.620 --> 00:17:51.100
weil der Interpreter ist, wenn man

00:17:51.100 --> 00:17:52.980
jetzt zwei unterschiedliche Projekte mit zwei unterschiedlichen Virtual Envs

00:17:52.980 --> 00:17:53.860
hat, ist man halt noch gleich,

00:17:53.860 --> 00:17:56.940
aber die Pakete, die installiert sind

00:17:56.940 --> 00:17:58.760
Ja, das ist ja auch ein Bild, Python-MV

00:17:58.760 --> 00:18:01.560
Bei Conda ist das anders

00:18:01.560 --> 00:18:03.360
da ist der Interpreter tatsächlich mit dabei

00:18:03.360 --> 00:18:05.940
das heißt, auch die Interpreter sind voneinander getrennt

00:18:05.940 --> 00:18:07.760
und man kann mit Conda

00:18:07.760 --> 00:18:09.460
nicht nur Python-Pakete installieren

00:18:09.460 --> 00:18:11.900
oder Python-Reels, sondern man kann halt auch

00:18:11.900 --> 00:18:14.120
andere Geschichten installieren

00:18:14.120 --> 00:18:15.180
das heißt, man kann zum Beispiel

00:18:15.180 --> 00:18:17.440
deswegen ist das auch bei Data Science immer so

00:18:17.440 --> 00:18:20.020
das braucht man halt einfach

00:18:20.020 --> 00:18:21.860
häufig hat man halt nicht so

00:18:21.860 --> 00:18:24.180
direkten Zugang zu den Maschinen,

00:18:24.240 --> 00:18:25.580
auf denen man irgendwie Dinge macht und dann

00:18:25.580 --> 00:18:28.040
kann es schon mal sein, dass man dann eine alte LibC hat oder sonst

00:18:28.040 --> 00:18:30.060
irgendwas oder alte

00:18:30.060 --> 00:18:32.140
Bibliotheken, die man nicht verwenden

00:18:32.140 --> 00:18:34.080
möchte und man kommt halt, man hat ja

00:18:34.080 --> 00:18:36.160
gar nicht die Berechtigung, das sozusagen auf Systemlevel

00:18:36.160 --> 00:18:38.100
zu ändern und dann kann man das

00:18:38.100 --> 00:18:39.860
mit Conda aber meistens schon irgendwie hinkriegen,

00:18:40.140 --> 00:18:40.980
dass man das halt dann,

00:18:41.900 --> 00:18:44.120
dass man dann halt eine eigene Grundlagenbibliothek

00:18:44.120 --> 00:18:46.160
irgendwie mit installiert

00:18:46.160 --> 00:18:48.000
und die dann verwendet wird, statt dem,

00:18:48.140 --> 00:18:50.120
was auf dem System drauf ist. Das geht mit Conda,

00:18:50.260 --> 00:18:51.640
das geht mit Pip nicht und

00:18:51.640 --> 00:18:54.120
daher ist das halt etwas,

00:18:54.960 --> 00:18:56.000
was man halt, wenn man

00:18:56.000 --> 00:18:58.060
diese Probleme hat, also wenn man Webentwicklung

00:18:58.060 --> 00:18:59.960
macht, hat man diese Probleme normalerweise nicht,

00:19:00.060 --> 00:19:02.100
aber bei Data Science kann das durchaus schon mal vorkommen

00:19:02.100 --> 00:19:04.000
und dann ist Conda da einfach das

00:19:04.000 --> 00:19:05.940
Ding, womit man Sachen hinkriegt, die mit

00:19:05.940 --> 00:19:07.720
Pip nicht gehen. Ja, da sind wir schon recht drin,

00:19:07.780 --> 00:19:09.480
es gibt ja Pip, was macht Pip?

00:19:10.020 --> 00:19:12.000
Pakete von PyPI installieren?

00:19:12.540 --> 00:19:14.100
Genau, vom Cheese Shop

00:19:14.100 --> 00:19:15.460
und

00:19:15.460 --> 00:19:17.920
ja. Und Conda

00:19:17.920 --> 00:19:19.900
installiert jetzt auch irgendwie externe Binaries

00:19:19.900 --> 00:19:21.440
noch und die gar nicht Python sind.

00:19:21.640 --> 00:19:22.900
und da gibt es noch ein anderes Tool für,

00:19:24.300 --> 00:19:26.380
das man häufiger nutzt, oder?

00:19:26.420 --> 00:19:27.700
Noch eine Isolationsschicht

00:19:27.700 --> 00:19:29.860
weiter isoliert, also

00:19:29.860 --> 00:19:32.000
ein Tool, also ich würde sagen, das nächste Tool in der Reihe

00:19:32.000 --> 00:19:33.940
wäre halt Docker. Oder PipX?

00:19:35.280 --> 00:19:35.600
PipX

00:19:35.600 --> 00:19:37.680
macht das gleich wie Pip, nur das ist halt

00:19:37.680 --> 00:19:40.180
für das, was du installierst, ein eigenes

00:19:40.180 --> 00:19:41.520
Virtual Env erzeugt direkt.

00:19:42.140 --> 00:19:44.060
Ja, oder es macht aber auch externe

00:19:44.060 --> 00:19:45.920
Sachen, also Sachen, die nicht dabei einliegen und teilweise

00:19:45.920 --> 00:19:47.880
Binary-Stil, die du halt direkt da beziehen kannst.

00:19:48.080 --> 00:19:48.680
Das wusste ich gar nicht.

00:19:50.440 --> 00:19:51.540
Ich habe gerade noch überlegt,

00:19:51.640 --> 00:19:54.000
vielleicht noch einmal zum Anaconda und Miniconda.

00:19:54.120 --> 00:19:58.460
Die Namen sagen das ja schon so ein bisschen, dass Anaconda wirklich riesig ist.

00:19:58.540 --> 00:20:02.480
Das nimmt auch unheimlich viel Speicherplatz ein, weil super viele Python-Packages,

00:20:02.660 --> 00:20:05.900
wenn man Anaconda installiert, kommt das mit Python, dann ist Conda dabei,

00:20:06.020 --> 00:20:10.900
was ja der Package-Manager ist von dieser Conda-Welt.

00:20:11.340 --> 00:20:15.060
Und aber auch super viele Packages, die man gar nicht unbedingt braucht.

00:20:15.200 --> 00:20:19.900
Und dementsprechend, wenn man jetzt nichts dagegen hat, die Packages, die man braucht,

00:20:19.900 --> 00:20:21.660
wirklich selbst zu installieren und auch nicht unbedingt

00:20:21.660 --> 00:20:23.660
so viel freien Speicher hat, dann ist

00:20:23.660 --> 00:20:25.760
Mini-Konda eigentlich immer eine gute Variante,

00:20:26.220 --> 00:20:27.800
was mit Python kommt, schon mit

00:20:27.800 --> 00:20:29.720
einer Version und eben mit

00:20:29.720 --> 00:20:31.740
Konda, mit dem Package-Manager, sodass man die

00:20:31.740 --> 00:20:33.860
Pakete dann installieren kann, die aber

00:20:33.860 --> 00:20:36.100
von dem Konda-Index

00:20:36.100 --> 00:20:37.120
kommen, dann nicht von PyPI.

00:20:38.300 --> 00:20:39.820
Ja, also ich denke,

00:20:39.920 --> 00:20:41.720
wenn man jetzt halt noch härter isolieren will als

00:20:41.720 --> 00:20:43.760
mit Konda, dann wäre

00:20:43.760 --> 00:20:45.720
halt Docker das Ding, was man

00:20:45.720 --> 00:20:47.100
noch verwenden kann, was halt viele benutzen.

00:20:48.180 --> 00:20:48.200
Ja.

00:20:48.200 --> 00:20:49.240
Ja, das ist ja so langsam

00:20:49.240 --> 00:20:52.000
Ich finde Conda so ein bisschen intrusiv, weil Conda relativ

00:20:52.000 --> 00:20:53.540
hart immer den Pfad direkt

00:20:53.540 --> 00:20:55.700
angreift, zumindest auf

00:20:55.700 --> 00:20:56.940
ein System und dann

00:20:56.940 --> 00:20:59.440
ja, muss man immer so ein bisschen aufpassen

00:20:59.440 --> 00:21:01.120
Ja, muss man beeilen

00:21:01.120 --> 00:21:03.800
Generell, der Pfad ist immer so das, wofür

00:21:03.800 --> 00:21:05.700
viele Anfänger halt drüber stolpern, wenn halt irgendwie

00:21:05.700 --> 00:21:07.880
im Pfad Dinge in der falschen Reihenfolge gesetzt sind und dann

00:21:07.880 --> 00:21:09.820
halt nicht das Python läuft, was sie eigentlich denken, was laufen

00:21:09.820 --> 00:21:10.480
sollte und sowas

00:21:10.480 --> 00:21:13.220
Ich habe auch mit Conda

00:21:13.220 --> 00:21:15.720
anfangs immer angefangen, weil ich es praktisch fand

00:21:15.720 --> 00:21:17.480
weil so viel schon damit

00:21:17.480 --> 00:21:24.820
kam, aber mit der Zeit habe ich auch dazu gewechselt, die Python-Version selbst zu installieren

00:21:24.820 --> 00:21:29.580
und nicht mehr auf Conda zurückzugreifen, auch weil ich das teilweise verwirrend fand,

00:21:29.720 --> 00:21:34.380
dann manche Packages kann man gut mit Conda installieren, andere wieder nicht und dann

00:21:34.380 --> 00:21:38.400
fand ich es tatsächlich leichter langfristig einfach die Dinge mit PIP zu machen, aber

00:21:38.400 --> 00:21:42.220
ich weiß, dass viele Conda, vor allem wenn sie jetzt nicht aus dem Computer Science-Bereich

00:21:42.220 --> 00:21:44.600
kommen, doch recht hilfreich finden.

00:21:44.600 --> 00:21:47.400
Ja, ich meine, manchmal muss man bei PIP halt auch die richtigen

00:21:47.400 --> 00:21:49.580
Build-Tools halt irgendwie noch installiert haben als Dependencies

00:21:49.580 --> 00:21:51.600
und je nachdem, was für Dependencies dabei sind,

00:21:51.640 --> 00:21:52.580
damit das gebaut werden kann,

00:21:53.340 --> 00:21:55.440
braucht man halt, weiß ich nicht, von C-Libraries

00:21:55.440 --> 00:21:57.680
über Haskell oder sowas und das halt manchmal so ein bisschen

00:21:57.680 --> 00:21:58.920
anstrengend sein kann,

00:21:59.460 --> 00:22:00.580
wenn man nicht weiß, was da passiert.

00:22:01.920 --> 00:22:03.420
Ja, das hat alles so

00:22:03.420 --> 00:22:04.260
seine Tücken.

00:22:05.320 --> 00:22:07.500
Ja, es ist leider kompliziert.

00:22:07.780 --> 00:22:08.980
Ich weiß auch nicht,

00:22:09.080 --> 00:22:11.460
ich würde sagen, immer wenn jemand fragt,

00:22:11.460 --> 00:22:13.140
ja, was soll ich denn nehmen,

00:22:13.140 --> 00:22:15.220
dann muss man eigentlich immer antworten, ja, hängt davon ab

00:22:15.220 --> 00:22:16.660
was man hat, das kann man

00:22:16.660 --> 00:22:19.140
nicht, ja, und das ist natürlich so ein bisschen

00:22:19.140 --> 00:22:20.200
eine doofe Situation, weil

00:22:20.200 --> 00:22:21.940
muss man lange erklären und so

00:22:21.940 --> 00:22:25.020
Ja, häufig finde ich es auch hilfreich, also ich

00:22:25.020 --> 00:22:27.160
arbeite ja immer an verschiedenen Kundenprojekten, dementsprechend

00:22:27.160 --> 00:22:28.180
auch in verschiedenen Teams

00:22:28.180 --> 00:22:31.100
dass die Teams sich ja häufig auch auf eine Lösung

00:22:31.100 --> 00:22:33.100
einigen, sodass sie sich dann gegenseitig helfen können

00:22:33.100 --> 00:22:34.960
dass dann nicht jeder sein eigenes Setup hat, sondern

00:22:34.960 --> 00:22:36.760
dass sie sich auch vielleicht auf einen Editor einigen

00:22:36.760 --> 00:22:39.200
den dann alle ähnlich aufsetzen können

00:22:39.200 --> 00:22:41.480
das ist mir schon häufiger begegnet

00:22:41.480 --> 00:22:43.060
Also da würde ich sagen, der

00:22:43.060 --> 00:22:44.700
gibt es immer große Widerstände,

00:22:44.920 --> 00:22:46.200
wenn man sich auf einen Editor einigen muss.

00:22:46.920 --> 00:22:48.860
Also es ist ganz gut, wenn die Sachen Editor-agnostisch

00:22:48.860 --> 00:22:50.900
funktionieren. Ja, das stimmt.

00:22:51.280 --> 00:22:52.760
Aber manchmal kann es auch ganz hilfreich sein.

00:22:52.900 --> 00:22:54.640
Also ich finde, es kommt wirklich sehr auf die Kunden

00:22:54.640 --> 00:22:54.660
zu achten.

00:22:54.660 --> 00:22:56.640
Ja, solange alle Leute das so machen, wie ich das richtig halte,

00:22:56.700 --> 00:22:57.300
ist das natürlich so.

00:22:58.680 --> 00:22:58.820
Ja.

00:23:01.620 --> 00:23:03.020
Genau, wo waren wir denn

00:23:03.020 --> 00:23:03.340
überhaupt?

00:23:04.760 --> 00:23:06.960
Wir haben Python installiert

00:23:06.960 --> 00:23:08.660
und wollen jetzt halt ein Environment haben und dann

00:23:08.660 --> 00:23:10.120
gibt es halt verschiedene Sachen, wie man das macht.

00:23:10.960 --> 00:23:12.700
Also was ich gerne noch zu Python

00:23:12.700 --> 00:23:14.660
sagen würde, also ich benutze das halt

00:23:14.660 --> 00:23:16.740
für Entwicklungsmaschinen, wenn ich halt

00:23:16.740 --> 00:23:18.720
die Python-Version, produktiv mache ich das

00:23:18.720 --> 00:23:20.620
eigentlich nicht, also nicht, wenn ich es unter Kontrolle

00:23:20.620 --> 00:23:31.633
habe wenn andere Leute das machen die machen manchmal auch andere Sachen Ich habe auch schon mal PyTest verwendet um halt dann auf Produktivmaschinen eine Python zu installieren oder so aber das mache ich jetzt eigentlich nicht mehr sondern ich installiere

00:23:31.633 --> 00:23:33.092
da hart, ich kompiliere Python. Also,

00:23:33.472 --> 00:23:35.452
das ist auch sowas, ne? Hätte ich nicht gedacht, also wenn

00:23:35.452 --> 00:23:37.072
mir jemand früher gesagt hätte, also

00:23:37.072 --> 00:23:39.432
in zehn Jahren, weißt du, wie du da Python

00:23:39.432 --> 00:23:41.392
installieren wirst? Du wirst es runterladen und

00:23:41.392 --> 00:23:43.493
auf der Maschine kompilieren. Ich dachte so,

00:23:43.592 --> 00:23:45.292
nee, das kann nicht sein. Doch,

00:23:45.472 --> 00:23:47.192
ist aber so. Also, das ist tatsächlich die

00:23:47.192 --> 00:23:48.652
von mir momentan präferierte

00:23:48.652 --> 00:23:52.032
auf ein Produktivsystem zu installieren, ist halt

00:23:52.032 --> 00:23:54.092
selber zu kompilieren und

00:23:54.092 --> 00:23:55.232
auf der Ausgabe zu bauen.

00:23:56.952 --> 00:23:58.192
Ich habe Python auch selten

00:23:58.192 --> 00:24:00.232
in Kundenprojekten benutzt,

00:24:00.332 --> 00:24:01.993
aber wenn man es mal ausprobieren möchte,

00:24:02.412 --> 00:24:03.932
finde ich das auch ganz nett,

00:24:04.013 --> 00:24:06.412
sich einfach mal die neueste Python-Version runterzuladen

00:24:06.412 --> 00:24:08.452
damit. Dann kann man das Tool mal ausprobieren

00:24:08.452 --> 00:24:10.732
und dann mal gucken, was die neue Python-Version

00:24:10.732 --> 00:24:12.612
so besonders macht

00:24:12.612 --> 00:24:13.272
oder mitbringt.

00:24:13.332 --> 00:24:16.072
Beta-Version oder Release-Candidates oder so, das ist immer sehr nett dafür.

00:24:16.172 --> 00:24:16.373
Genau.

00:24:16.373 --> 00:24:19.332
Ich überlege gerade, wie das so gut finde, dass ich das selber

00:24:19.332 --> 00:24:20.672
kompiliere im Produktivsystem

00:24:20.672 --> 00:24:22.952
Warum nicht Python für ein Produktivsystem?

00:24:23.832 --> 00:24:24.633
Naja, deswegen, weil ich

00:24:24.633 --> 00:24:27.152
der Grund, warum ich damit dann aufgehört habe, ist, dass ich

00:24:27.152 --> 00:24:29.232
dann irgendwie nach längerer Zeit gemerkt

00:24:29.232 --> 00:24:30.772
habe, dass manche Projekte halt

00:24:30.772 --> 00:24:33.012
eine alte Verhalten-Version verwendet haben

00:24:33.012 --> 00:24:35.092
wo ich das

00:24:35.092 --> 00:24:36.493
gar nicht mehr gedacht hätte, dass sie das tun

00:24:36.493 --> 00:24:38.472
und es aber alles weiter funktioniert hat

00:24:38.472 --> 00:24:40.352
und ich das aber gar nicht wollte

00:24:40.352 --> 00:24:42.753
und dann gesagt, also

00:24:42.753 --> 00:24:44.952
ist es mir doch lieber, dass halt, weil ich

00:24:44.952 --> 00:24:48.112
und ich hätte sowieso gerne immer die gleichen Python-Versionen für alle.

00:24:48.852 --> 00:24:50.873
Aber den Fall, dass ich das unterscheiden würde, den habe ich gar nicht.

00:24:51.292 --> 00:24:54.133
Aber es kann ja mal sein, dass du irgendwie so eine harte obere Schranke hast,

00:24:54.192 --> 00:24:56.893
weil irgendein Projekt auf irgendeine völlig veraltete Library dependet,

00:24:56.932 --> 00:24:58.792
die halt schade ist, aber die halt da irgendwie erst drin hängt

00:24:58.792 --> 00:25:00.712
und jetzt musst du halt eine alte Version nehmen.

00:25:01.373 --> 00:25:03.232
Ja, passiert bei meinen Sachen nie.

00:25:03.952 --> 00:25:05.092
Okay, ja, okay.

00:25:05.373 --> 00:25:06.772
Also ich habe schon ein paar Kunden, geht das so?

00:25:07.272 --> 00:25:07.572
Ja, klar.

00:25:08.172 --> 00:25:10.232
Also der Vorteil von PyInf ist halt,

00:25:10.272 --> 00:25:12.152
ich kann halt einfach auch die Version einfach dann installieren

00:25:12.152 --> 00:25:14.912
und wenn in meiner production-pipeline PyInf halt drin ist,

00:25:14.952 --> 00:25:17.133
dann ist das halt ein leichtes, mal eben

00:25:17.133 --> 00:25:19.192
da auch mehrere Projekte mit unterschiedlichen Python-Versionen

00:25:19.192 --> 00:25:20.633
auf einem Produktivsystem laufen zu haben.

00:25:21.133 --> 00:25:23.052
Was halt, wenn ich das alles selber kompilieren muss, wie der

00:25:23.052 --> 00:25:25.052
Hustle ist, muss ich das alles selber konfigurieren.

00:25:25.352 --> 00:25:26.912
Das ist ja genau das, warum ich ja solche Tools

00:25:26.912 --> 00:25:28.772
nutzen möchte. Ja, siehst du, kommt drauf an.

00:25:29.212 --> 00:25:29.373
Ja.

00:25:31.072 --> 00:25:31.812
Ja, leider.

00:25:33.432 --> 00:25:34.052
Tja, ja.

00:25:35.672 --> 00:25:37.172
Da wären wir bei der Hoffnung, dass es

00:25:37.172 --> 00:25:39.133
irgendwann das eine Tool gibt, was alles macht.

00:25:39.253 --> 00:25:41.352
Ja. Sodass man dann nicht mehr diskutieren

00:25:41.352 --> 00:25:43.092
muss. Da gibt es ja gerade tolle Versuche,

00:25:43.092 --> 00:25:44.472
und das zu lösen irgendwie, ne?

00:25:45.412 --> 00:25:47.352
Man hört immer Rust an der Stelle und ich würde auch

00:25:47.352 --> 00:25:49.373
sagen, dass tatsächlich, vielleicht gar nicht so eine doofe Idee ist.

00:25:49.732 --> 00:25:51.192
Ich hätte das gerne, dass Python selber das

00:25:51.192 --> 00:25:52.753
irgendwie anbietet, fände ich irgendwie cool, weil

00:25:52.753 --> 00:25:55.312
diese ganzen Tools, die es von außen gibt, die sind alle so

00:25:55.312 --> 00:25:57.432
also du hast eben Rye erwähnt,

00:25:57.493 --> 00:25:59.272
das ist das Tool von Armin Runacher, was auch

00:25:59.272 --> 00:26:01.032
in Rust geschrieben ist, der ist für Rust am Machen,

00:26:01.112 --> 00:26:02.772
dass so seine Opinion ist, wie man so Projekte

00:26:02.772 --> 00:26:04.452
neu baut.

00:26:05.552 --> 00:26:07.393
Ehrlicherweise, also ich bin da so ein bisschen anderer Meinung,

00:26:07.753 --> 00:26:09.052
wie man das richtig machen würde.

00:26:09.152 --> 00:26:10.652
Also ich mache es anders, mein Taste ist anders.

00:26:10.652 --> 00:26:14.832
aber das ist eigentlich ja sowas, was man halt will.

00:26:15.432 --> 00:26:18.732
Du hast vielleicht noch den großen Überblick von Tools, die man dafür verwenden kann?

00:26:20.672 --> 00:26:24.552
Ja genau, also bei Environment Management vielleicht nochmal wieder als Einführung,

00:26:24.633 --> 00:26:28.592
falls Leute dabei sind, die da noch nicht sich so gut mit auskennen,

00:26:28.672 --> 00:26:31.432
also wenn man beispielsweise an mehreren Projekten gleichzeitig arbeitet

00:26:31.432 --> 00:26:36.012
und dann kann das immer mal wieder vorkommen, dass Projekte das gleiche Package brauchen,

00:26:36.133 --> 00:26:39.712
aber in einer anderen Version und man möchte die Packages eigentlich nicht direkt auf der Maschine

00:26:39.712 --> 00:26:47.212
mit den nativen Dingen installieren, sondern es ist immer ganz schön, wenn man das isolieren kann,

00:26:47.312 --> 00:26:52.272
dann kann man alle Dependencies installieren, die man für das Projekt braucht, ohne dass man irgendwas anderes kaputt macht.

00:26:52.772 --> 00:26:54.612
Und dafür kann man Virtual Environments nutzen.

00:26:55.792 --> 00:26:59.672
Es gibt auch einen anderen Ansatz, aber die meisten Tools benutzen Virtual Environments

00:26:59.672 --> 00:27:05.592
und erstellen dann eben kleine isolierte Umgebungen, wo man dann über PIP oder Conda, wie auch immer,

00:27:06.552 --> 00:27:08.612
sich die Pakete installieren kann.

00:27:08.612 --> 00:27:15.032
und Python hat zwei Tools, die wirklich nur für Environment Management gedacht sind.

00:27:15.253 --> 00:27:19.192
Das ist einmal Venv, das kommt auch direkt mit, wenn man Python installiert.

00:27:19.272 --> 00:27:20.952
Das brauchen wir also nicht zusätzlich installieren.

00:27:21.493 --> 00:27:23.652
Und Virtual Env, ich habe beides schon benutzt.

00:27:24.112 --> 00:27:25.112
Es ist beides recht ähnlich.

00:27:25.272 --> 00:27:28.112
Virtual Env kann noch ein paar mehr Dinge machen als Venv.

00:27:28.772 --> 00:27:33.512
Aber ich könnte da jetzt nicht eins groß über das andere empfehlen.

00:27:33.692 --> 00:27:36.993
Vor allem, weil wenn man noch mehr machen möchte,

00:27:36.993 --> 00:27:38.712
beispielsweise, man ein Package erstellt, dann

00:27:38.712 --> 00:27:40.912
ist es häufig hilfreich, eins von den Tools

00:27:40.912 --> 00:27:42.812
zu benutzen, die eben auch noch andere Dinge können.

00:27:43.512 --> 00:27:44.952
Aber ich habe häufiger schon mal, wenn ich

00:27:44.952 --> 00:27:46.893
einfach nur ein Virtual Environment erstellt,

00:27:47.493 --> 00:27:48.493
erstellen wollte,

00:27:48.612 --> 00:27:50.493
wenn benutzt oder Virtual Env, um das

00:27:50.493 --> 00:27:52.633
schnell machen zu können. Also ich benutze

00:27:52.633 --> 00:27:54.112
dann immer noch Virtual Env Wrapper,

00:27:55.052 --> 00:27:56.893
weil das halt dann irgendwie nur so drei oder

00:27:56.893 --> 00:27:58.772
vier... Ja, da gibt es dann auch ein paar interessante

00:27:58.772 --> 00:28:00.012
Shell-Aliasse, die man dann... Genau.

00:28:01.232 --> 00:28:02.393
Ehrlicherweise auf Windows,

00:28:02.612 --> 00:28:04.653
wenn ich Windows benutze, das ist ja immer Quatsch, da gab es irgendwie

00:28:04.653 --> 00:28:06.672
Virtual Env Wrapper PowerShell, das irgendwie fürchterlich war und ich habe es

00:28:06.672 --> 00:28:08.692
einfach selber geschrieben, was eigentlich nur ein Wrapper

00:28:08.692 --> 00:28:10.512
um Benf ist. Du willst halt sowas haben wie

00:28:10.512 --> 00:28:12.772
MK Virtual Env oder RM Virtual Env

00:28:12.772 --> 00:28:14.512
oder LS Virtual Env, um halt deine

00:28:14.512 --> 00:28:16.552
Virtual Envs anzuzeigen, die du hast und die du halt einfach dann

00:28:16.552 --> 00:28:18.752
aktivieren kannst mit sowas wie WorkOn.

00:28:18.893 --> 00:28:20.692
Also ich finde das Schönste an Virtual Env

00:28:20.692 --> 00:28:22.672
Wrapper ist WorkOn. Du gehst halt einfach in dein

00:28:22.672 --> 00:28:24.572
Projekt und gibst ein

00:28:24.572 --> 00:28:26.552
WorkOn in der Shell und die Env ist

00:28:26.552 --> 00:28:28.352
aktiviert, ohne dass du irgendwas machen musst und das ist halt immer

00:28:28.352 --> 00:28:29.493
convenient, das zu tun.

00:28:30.352 --> 00:28:32.412
Ah ja, benutzt aber einer von euch eigentlich genau

00:28:32.412 --> 00:28:34.552
fürs Erzeugen oder Verwalten von

00:28:34.552 --> 00:28:36.552
Virtual Envs PyEnv, weil das könnte

00:28:36.552 --> 00:28:37.272
ja auch machen.

00:28:39.212 --> 00:28:40.552
Ja, nein, also ich benutze

00:28:40.552 --> 00:28:40.972
es nicht mehr.

00:28:42.332 --> 00:28:43.432
Ich habe es noch nie benutzt dafür.

00:28:43.752 --> 00:28:46.292
Ich habe es mal dafür benutzt und mache es aber nicht mehr,

00:28:46.452 --> 00:28:47.972
weil das ist

00:28:47.972 --> 00:28:49.452
damit

00:28:49.452 --> 00:28:52.232
hatte sich das erledigt,

00:28:52.552 --> 00:28:54.572
als ich dann von ZSH auf Fisch umgestellt

00:28:54.572 --> 00:28:56.072
habe, die Shell.

00:28:56.352 --> 00:28:58.452
Und jetzt verwende ich halt zum Verwalten der Virtual

00:28:58.452 --> 00:29:00.312
Apps Virtual Fisch, was ich auch noch

00:29:00.312 --> 00:29:01.612
spielen kann, wenn man die Fisch-Shell hat.

00:29:03.272 --> 00:29:04.032
Ja, genau.

00:29:04.032 --> 00:29:04.912
Nee, verwende ich auch nicht mehr.

00:29:04.912 --> 00:29:06.832
Ja genau, also ich benutze tatsächlich

00:29:06.832 --> 00:29:08.873
für Erstellen von Virtual Envs meistens

00:29:08.873 --> 00:29:10.832
Poetry, da wird gleich ein großer

00:29:10.832 --> 00:29:12.812
Aufschrei kommen, weil da wird eine große Diskussion um

00:29:12.812 --> 00:29:14.873
dieses Tool und ich benutze es tatsächlich immer noch und

00:29:14.873 --> 00:29:16.792
ja, weil das in den Projekten

00:29:16.792 --> 00:29:18.373
ich eh eine PyProject-Hummel habe, wo die

00:29:18.373 --> 00:29:20.952
Dependencies drin definiert sind, dann mit Poetry relativ easy geht

00:29:20.952 --> 00:29:22.633
und wenn ich mal selber

00:29:22.633 --> 00:29:24.772
eine eigene Venv-Kurse brauche, dann einfach mit dem

00:29:24.772 --> 00:29:26.572
Virtual Env-Rapper, einfach mkVirtualEnv

00:29:26.572 --> 00:29:28.272
Name, work on, fertig

00:29:28.272 --> 00:29:30.873
Ja, das ist auch das, was ich am meisten

00:29:30.873 --> 00:29:32.712
gesehen habe, wobei

00:29:32.712 --> 00:29:34.792
für Einsteiger, die jetzt wirklich noch nie ein Package gemacht

00:29:34.792 --> 00:29:36.393
haben, ist das häufig

00:29:36.393 --> 00:29:38.052
nochmal schwierig, wenn man dann

00:29:38.052 --> 00:29:40.052
da plötzlich so ein PyProject.toml-File

00:29:40.052 --> 00:29:41.873
rumfliegen hat und überhaupt nicht weiß,

00:29:42.032 --> 00:29:43.972
was das macht und wofür man das braucht.

00:29:44.432 --> 00:29:46.332
Da kann es schon ganz hilfreich sein, einfach mal nur diese

00:29:46.332 --> 00:29:48.532
Tools zu benutzen, wie VENV.

00:29:48.912 --> 00:29:50.312
Ja, über die PyProject.toml

00:29:50.312 --> 00:29:52.412
müssen wir, glaube ich, später auch nochmal sprechen, weil es da ja auch verschiedene

00:29:52.412 --> 00:29:54.373
Ideen gibt, wie man das strukturiert und da bin ich auch mit

00:29:54.373 --> 00:29:56.532
so Sachen wie Poetry zum Beispiel nicht so einverstanden

00:29:56.532 --> 00:29:58.412
und da gibt es ja so ein paar

00:29:58.412 --> 00:29:59.912
Peps, die, glaube ich, das relativ

00:29:59.912 --> 00:30:02.172
besser strukturiert hätten, glaube ich, ja.

00:30:03.232 --> 00:30:04.653
Es gibt auch so ein paar Tools,

00:30:04.792 --> 00:30:06.532
Du hattest ja gerade einmal gefragt, die

00:30:06.532 --> 00:30:08.852
nicht nur Environment Management machen, also natürlich

00:30:08.852 --> 00:30:10.792
auch die, die alle Packaging machen, aber es gibt zum Beispiel

00:30:10.792 --> 00:30:12.552
PipEnv, das ist auch schon

00:30:12.552 --> 00:30:14.373
ziemlich alt, das Tool,

00:30:15.032 --> 00:30:16.552
was einem dann auch noch erlaubt,

00:30:16.672 --> 00:30:18.653
das sagt der Name ja auch schon, dass es Pip

00:30:18.653 --> 00:30:20.752
und Virtual Env zusammenführt

00:30:20.752 --> 00:30:22.692
und das Ganze noch mal

00:30:22.692 --> 00:30:24.692
ein bisschen mehr abstrahiert, also

00:30:24.692 --> 00:30:26.772
noch mehr Funktionalitäten hat und man darüber

00:30:26.772 --> 00:30:28.153
auch Packages installieren kann.

00:30:28.172 --> 00:30:30.653
PipEnv höre ich immer relativ komische Dinge.

00:30:32.512 --> 00:30:33.012
Weiß ich nicht.

00:30:33.192 --> 00:30:33.633
Inwiefern?

00:30:33.633 --> 00:30:52.812
Ja, also früher, also es gab eine Zeit lang, war halt da mal so ein bisschen das Problem, was man gehört hat, dass das nicht richtig im Intent wäre oder so. Das ist nicht mehr so. Das ist inzwischen, weil es halt auch eins von den Projekten von, na, wie heißt der noch? Kenneth Wright. Ursprünglich, aber der hat damit glaube ich nichts mehr zu tun.

00:30:52.812 --> 00:30:53.712
Also, das ist abgegeben.

00:30:54.052 --> 00:30:56.052
Ich glaube, das war mir zu einer der Gründe, wo man gesagt hat,

00:30:56.212 --> 00:30:58.292
aber, ja,

00:30:58.772 --> 00:30:59.712
wenn das jetzt in anderen Händen liegt,

00:31:00.112 --> 00:31:01.352
müsste man das nochmal angucken.

00:31:02.692 --> 00:31:03.692
Ja, okay, hat auch noch so eine...

00:31:03.692 --> 00:31:06.373
Ich glaube es aber, ja, ganz viel

00:31:06.373 --> 00:31:08.352
in diesem Bereich, da kommt es aber auch

00:31:08.352 --> 00:31:10.412
drauf an, was man gewohnt ist, was die anderen benutzen.

00:31:10.493 --> 00:31:12.352
Wenn man irgendwann anfängt, ein Tool zu benutzen,

00:31:12.412 --> 00:31:14.493
beispielsweise, wie du das jetzt mit Poetry genannt hast,

00:31:15.092 --> 00:31:16.452
dann gibt es selten Grund, plötzlich

00:31:16.452 --> 00:31:17.912
auf ein Tool wie Pipens umzusteigen.

00:31:18.512 --> 00:31:20.232
Weil, ja,

00:31:20.232 --> 00:31:22.452
also, ich könnte jetzt verstehen, wenn man dann ein anderes Packaging-Tool

00:31:22.452 --> 00:31:24.373
benutzt, also eins, was auch mehrere

00:31:24.373 --> 00:31:26.493
Dinge kann, aber dass man zurückgeht auf ein Tool,

00:31:26.592 --> 00:31:28.352
was weniger kann und dann vielleicht nochmal

00:31:28.352 --> 00:31:30.352
mehr Komplexität hinzufügt, weil

00:31:30.352 --> 00:31:32.493
PipEnv zum Beispiel hat so eine eigene

00:31:32.493 --> 00:31:34.252
Konvention, das ist eben schon rausgekommen,

00:31:34.332 --> 00:31:35.752
bevor es den

00:31:35.752 --> 00:31:38.432
Python Enhancement Proposal gab

00:31:38.432 --> 00:31:40.292
zu PyProject.toml-Files,

00:31:40.352 --> 00:31:42.352
dass man die benutzt und die haben eben auch so

00:31:42.352 --> 00:31:44.512
einen eigenen Weg, das zu machen.

00:31:44.772 --> 00:31:46.332
Also wenn man PipEnv benutzt,

00:31:46.512 --> 00:31:48.232
hat man plötzlich ein Pip-File noch da

00:31:48.232 --> 00:31:49.993
und auch ein Pip-File.log.

00:31:52.452 --> 00:31:54.212
Das finde ich teilweise schwierig, weil

00:31:54.212 --> 00:31:56.592
das nochmal wieder

00:31:56.592 --> 00:31:57.952
was anderes ist.

00:31:59.172 --> 00:32:00.252
Also ich glaube, Leute, die PyPen

00:32:00.252 --> 00:32:02.452
schon benutzt haben und sich damit auskennen,

00:32:02.512 --> 00:32:04.393
für die ist das ganz nett, aber ich würde

00:32:04.393 --> 00:32:06.572
jetzt, ich persönlich niemandem empfehlen,

00:32:06.612 --> 00:32:08.352
sich das anzugucken, sondern dann einfach direkt

00:32:08.352 --> 00:32:10.112
ein Tool wie Poetry zu benutzen oder

00:32:10.112 --> 00:32:12.012
Rye, Hedge, wie auch immer.

00:32:12.812 --> 00:32:14.292
Was haltet ihr von PDM? Oder was

00:32:14.292 --> 00:32:14.893
hältst du von PDM?

00:32:16.512 --> 00:32:18.432
Ich habe es jetzt noch nie in einem Projekt

00:32:18.432 --> 00:32:20.212
benutzt, also in einem Kundenprojekt. Ich habe es mal

00:32:20.212 --> 00:32:22.212
selbst ausprobiert. Darum kann ich da nicht

00:32:22.212 --> 00:32:52.192
und Python-Tools.

00:32:52.212 --> 00:33:22.192
und PyTest.

00:33:22.212 --> 00:33:24.373
und das war auch einer der Gründe, warum ich

00:33:24.373 --> 00:33:26.532
irgendwann mal auch eigentlich recht begeistert war

00:33:26.532 --> 00:33:28.592
von Poetry, dass ich das Gefühl

00:33:28.592 --> 00:33:30.592
hatte, ich muss nur noch diese eine Geschichte irgendwie

00:33:30.592 --> 00:33:32.452
benutzen und kann damit eigentlich alles

00:33:32.452 --> 00:33:33.972
machen, was ich so irgendwie tun will

00:33:33.972 --> 00:33:36.492
und dann merkt man aber mit der Zeit so

00:33:36.492 --> 00:33:37.712
na, so richtig

00:33:37.712 --> 00:33:40.373
so, leider sind die Sachen doch sehr

00:33:40.373 --> 00:33:42.373
so unterschiedlich, dass man sich dann doch

00:33:42.373 --> 00:33:44.452
dafür interessieren muss, dass diese Abstraktion halt anfängt

00:33:44.452 --> 00:33:46.413
zu nicken und dann

00:33:46.413 --> 00:33:48.252
dann wird es halt hässlich

00:33:48.252 --> 00:33:50.373
Also ich finde Poetry

00:33:50.373 --> 00:33:51.992
Super, weil es halt drei Sachen für mich macht.

00:33:52.112 --> 00:33:53.752
Und das sind Dependencies für ein Projekt dazufügen,

00:33:54.133 --> 00:33:56.292
Dependencies für ein Projekt installieren, Dependencies für ein Projekt

00:33:56.292 --> 00:33:58.373
updaten. Und das ist so das Hauptding,

00:33:58.413 --> 00:33:59.952
für das ich es benutze. Und es ist trotzdem

00:33:59.952 --> 00:34:01.972
total nervig und es geht immer wieder

00:34:01.972 --> 00:34:04.133
kaputt. Schreibst du Libraries,

00:34:04.452 --> 00:34:05.932
wo du dann Pakete erzeugst? Nein, genau.

00:34:06.072 --> 00:34:08.172
Das nicht, weil das ist nämlich genau der Punkt, wo ich wahrscheinlich

00:34:08.172 --> 00:34:10.052
weiß ich nicht, ob ich Portree-Filmen nehmen würde.

00:34:10.332 --> 00:34:12.113
Ich habe ja irgendwie Flit oder Hedge irgendwie besser

00:34:12.113 --> 00:34:14.292
dafür geeignet, aber da kommen wir vielleicht auch noch drauf,

00:34:14.332 --> 00:34:15.373
wenn wir Packaging besprechen.

00:34:16.552 --> 00:34:18.192
Ja, weil ich würde sagen, solange man

00:34:18.192 --> 00:34:20.312
nur Projekte hat,

00:34:20.373 --> 00:34:22.153
wo man halt andere Abhängigkeiten reinzieht

00:34:22.153 --> 00:34:23.473
und die man dann halt irgendwie

00:34:23.473 --> 00:34:26.153
irgendwo installiert oder irgendwo hingeployt

00:34:26.153 --> 00:34:28.192
und so, da funktioniert das ganz gut, aber sobald

00:34:28.192 --> 00:34:30.133
man halt eigene Libraries hat, wo man

00:34:30.133 --> 00:34:32.113
irgendwie Pakete

00:34:32.113 --> 00:34:34.153
erzeugen möchte, dann beißt

00:34:34.153 --> 00:34:35.953
einen das so ein bisschen, dass da die Anforderungen

00:34:35.953 --> 00:34:37.192
einfach völlig anders sind als

00:34:37.192 --> 00:34:39.953
und ja, also da finde ich halt zum Beispiel

00:34:39.953 --> 00:34:41.312
also da fand ich halt Pochi

00:34:41.312 --> 00:34:43.532
macht da Ding, äh, da

00:34:43.532 --> 00:34:45.113
hat mich sozusagen

00:34:45.113 --> 00:34:46.812
kalt erwischt, dass

00:34:46.812 --> 00:34:49.832
die, dass das halt zwei

00:34:49.832 --> 00:34:53.332
sehr unterschiedliche Use Cases sind und ich dachte, ich könnte das halt für beides gleich verwenden.

00:34:53.653 --> 00:34:57.832
Dann will man halt irgendwie den Pfad für Poetry Home setzen

00:34:57.832 --> 00:35:01.413
und dann installiert es aber trotzdem irgendwo anders andere Dinge hin und sowas.

00:35:01.473 --> 00:35:02.812
Das ist halt einfach total nervig.

00:35:03.112 --> 00:35:07.953
Das Schlimmste war, also bei meinem Anwendungsfall, das habe ich wirklich nicht gewusst

00:35:07.953 --> 00:35:13.552
und das hat halt Sachen draußen kaputt gemacht, ist halt das Poetry per Default,

00:35:14.092 --> 00:35:16.973
was ja vielleicht okay ist für Applikationen, die man irgendwo hindeployt,

00:35:16.973 --> 00:35:19.212
eine obere Schranke für

00:35:19.212 --> 00:35:21.192
Abhängigkeiten hat. Das kannst du aber einstellen.

00:35:21.373 --> 00:35:22.612
Klar kann man das einstellen, ich habe es nicht gemacht.

00:35:23.312 --> 00:35:25.292
Und wenn du jetzt ein Paket baust und hast

00:35:25.292 --> 00:35:26.692
da implizit obere Schranken drin

00:35:26.692 --> 00:35:29.292
für die Abhängigkeiten, dann ist das für

00:35:29.292 --> 00:35:31.192
Leute, die dein

00:35:31.192 --> 00:35:33.012
Paket als Abhängigkeit haben, halt total blöd.

00:35:33.512 --> 00:35:35.352
Ja, also obere Schranken, also da war ich

00:35:35.352 --> 00:35:37.032
erst anderer Meinung und das macht

00:35:37.032 --> 00:35:39.492
im Datastore-Umfeld unheimlich viele Pakete,

00:35:39.592 --> 00:35:40.552
die halt obere Schranken drin haben.

00:35:41.153 --> 00:35:43.232
Und es gab diesen sehr länglichen Blogpost

00:35:43.232 --> 00:35:44.232
dazu, den du mir geschickt hast,

00:35:44.232 --> 00:35:46.332
den wir auch nochmal verlinken können, der

00:35:46.332 --> 00:35:48.433
mich auch überzeugt hat zu sagen, dass das wahrscheinlich

00:35:48.433 --> 00:35:50.473
eine ziemlich doofe Idee überhaupt, so eine obere

00:35:50.473 --> 00:35:51.172
Schranke zu haben.

00:35:52.893 --> 00:35:54.373
Interessant, das ist mir noch nie begegnet,

00:35:54.393 --> 00:35:54.852
das Problem.

00:35:56.492 --> 00:35:58.052
Ja, im Data Science-Umfeld tatsächlich öfter.

00:35:58.272 --> 00:36:00.492
Und wenn du dann irgendwelche neuen Versionen hast

00:36:00.492 --> 00:36:02.352
und die sagen, na, ich will aber nur bis

00:36:02.352 --> 00:36:04.352
Python maximal 3.10 gehen und würde es aber 3.11 nehmen,

00:36:04.953 --> 00:36:06.112
dann musst du das halt irgendwie umbauen.

00:36:06.393 --> 00:36:07.953
Oder sowas, das ist halt schon ätzend.

00:36:08.792 --> 00:36:10.352
Ja, eigentlich gar nicht so sehr dabei,

00:36:10.492 --> 00:36:12.433
sondern eher so bei irgendwelchen

00:36:12.433 --> 00:36:14.653
Third-Party-Geschichten, also man hat halt irgendwie

00:36:14.653 --> 00:36:17.512
eine Krypto-Library

00:36:17.512 --> 00:36:18.953
oder so, die man halt

00:36:18.953 --> 00:36:20.572
als Einbringlichkeit verwendet, weil man irgendwas

00:36:20.572 --> 00:36:22.393
für irgendwas braucht

00:36:22.393 --> 00:36:24.292
und dann

00:36:24.292 --> 00:36:27.212
sozusagen hat man eine implizite

00:36:27.212 --> 00:36:28.413
obere Schranke auf der

00:36:28.413 --> 00:36:30.953
Version von diesem Paket

00:36:30.953 --> 00:36:32.893
und jemand installiert

00:36:32.893 --> 00:36:34.712
jetzt eine Library, die man selber irgendwie

00:36:34.712 --> 00:36:36.852
gebaut hat und hat

00:36:36.852 --> 00:36:38.852
aber noch eine andere und jetzt sagt die eine

00:36:38.852 --> 00:36:40.873
irgendwie, ich brauche aber Abversion so und so, weil

00:36:40.873 --> 00:36:42.352
die hat halt irgendwie so eine

00:36:42.352 --> 00:36:44.532
Funktion, die das halt benötigt und

00:36:44.532 --> 00:36:46.672
mein Paket, ohne dass ich das weiß, sagt

00:36:46.672 --> 00:36:48.633
aber ich kann nur bis zu der Version und dann

00:36:48.633 --> 00:36:50.712
kriegt der halt einen Konflikt und kann

00:36:50.712 --> 00:36:52.812
es nicht mehr installieren. Und das gar nicht

00:36:52.812 --> 00:36:54.692
deswegen, weil es einen echten Konflikt gibt, sondern deswegen, weil

00:36:54.692 --> 00:36:56.272
ich einfach nur in der Default-Einstellung nichts geändert habe.

00:36:56.712 --> 00:36:58.172
Und das ist halt, genau.

00:36:58.792 --> 00:37:00.232
Und wenn dann Leute sagen so, dein

00:37:00.232 --> 00:37:02.612
Library ist, die macht irgendwie

00:37:02.612 --> 00:37:03.933
hier bei mir Dinge kaputt, dann

00:37:03.933 --> 00:37:06.752
ja, das ist halt nicht so schön. Genau, und das ist also im Datastandort

00:37:06.752 --> 00:37:08.692
hatte ich das recht häufig bei irgendwie Machine Learning-Paketen,

00:37:08.692 --> 00:37:10.852
dass du halt tatsächlich hingehen musstest, müsstest du in den Paketen

00:37:10.852 --> 00:37:12.973
die Requirements so anpassen, dass es halt irgendwie funktioniert

00:37:12.973 --> 00:37:14.873
und gucken, ob es da geht, was man halt dann auch nicht so genau

00:37:14.873 --> 00:37:16.812
weiß, aber das, ja.

00:37:19.352 --> 00:37:20.852
Habt ihr das mal mit anderen Tools

00:37:20.852 --> 00:37:22.752
ausprobiert, ob das Problem dann auch besteht?

00:37:22.973 --> 00:37:24.032
Ja, besteht auch mit dem, damit.

00:37:25.973 --> 00:37:26.953
Also, apropos

00:37:26.953 --> 00:37:28.672
Tools, Jochen, du mit PIP-Tools

00:37:28.672 --> 00:37:30.873
jetzt für deine Environments? Genau, also

00:37:30.873 --> 00:37:32.913
ich verwende jetzt unterschiedliche Dinge, also für

00:37:32.913 --> 00:37:34.772
diese beiden unterschiedlichen Use Cases, also wenn ich halt

00:37:34.772 --> 00:37:37.072
eine Applikation habe, wo ich Abhängigkeiten,

00:37:37.532 --> 00:37:38.732
also wenn ich halt auch sowas wie Blog-Files

00:37:38.732 --> 00:37:40.752
bei meiner Library habe, habe ich ja keinen

00:37:40.752 --> 00:37:42.933
Logfile. Aber bei einer Applikation

00:37:42.933 --> 00:37:44.752
hätte ich natürlich schon wieder einen Logfile, sodass halt alle

00:37:44.752 --> 00:37:46.612
Entwickler irgendwie das halt weiß.

00:37:47.112 --> 00:37:48.072
Was nochmal ein Logfile ist,

00:37:48.153 --> 00:37:50.792
also ein Logfile ist

00:37:50.792 --> 00:37:52.852
normalerweise, pinnt halt die Dependencies

00:37:52.852 --> 00:37:54.032
und insbesondere den

00:37:54.032 --> 00:37:56.252
Subdependency-Grafen halt mit

00:37:56.252 --> 00:37:58.552
für deine Dependencies, dass halt klar ist, dass so

00:37:58.552 --> 00:38:00.512
die Versionen und die Abhängigkeiten

00:38:00.512 --> 00:38:02.633
dieser Pakete, die du da benutzt, auch

00:38:02.633 --> 00:38:04.532
gepinnt sind und

00:38:04.532 --> 00:38:06.712
meistens hasht es die noch, das heißt, du kannst

00:38:06.712 --> 00:38:08.572
halt sehen, ob irgendwelche Änderungen da sind, also aus der

00:38:08.572 --> 00:38:10.732
Qt-Perspektive gar nicht so interessant. Ja, ob das was man runter

00:38:10.732 --> 00:38:11.732
geladen hat, auch tatsächlich

00:38:11.732 --> 00:38:13.352
das ist, was man haben wollte.

00:38:14.352 --> 00:38:14.572
Genau.

00:38:16.012 --> 00:38:17.893
Also es führt halt dazu, dass wenn zwei Leute

00:38:17.893 --> 00:38:19.192
sozusagen

00:38:19.192 --> 00:38:22.292
das Virtual Env mit

00:38:22.292 --> 00:38:23.172
allen Environments

00:38:23.172 --> 00:38:25.352
installieren,

00:38:26.413 --> 00:38:28.032
kriegen sie genau das gleiche und haben nicht

00:38:28.032 --> 00:38:29.232
unterschiedliche Versionen von Paketen.

00:38:29.232 --> 00:38:31.772
Das Hauptproblem auch, also klassisch ist ja

00:38:31.772 --> 00:38:34.212
Requirements.txt. Genau, da wäre es

00:38:34.212 --> 00:38:36.312
nicht so. Da sind halt diese ganzen Subdependencies

00:38:36.312 --> 00:38:37.633
nicht enthalten. Es kann halt sein, dass wenn man

00:38:37.633 --> 00:38:39.852
Requirements.txt irgendwie ein Jahr später installiert,

00:38:39.852 --> 00:38:43.172
und wie das dann gebrochen ist, weil sich da Anhängigkeiten geändert haben.

00:38:43.272 --> 00:38:48.153
Man erzeugt die Requirements.txt, sechs Monate später kommt ein Entwickler dazu und installiert nochmal und sagt,

00:38:48.252 --> 00:38:52.732
das lässt sich gar nicht mehr installieren, weil irgendwelche Konflikte auftreten oder es verhält sich anders.

00:38:53.393 --> 00:38:54.893
Und das ist natürlich etwas, was man nicht haben will.

00:38:55.112 --> 00:38:56.453
Dafür braucht man unbedingt Blogfiles halt.

00:38:56.672 --> 00:39:01.272
Und deswegen, also diese Blogfiles sollten eigentlich meiner Meinung nach auf jeden Fall Teil von so einem Projekt sein.

00:39:02.052 --> 00:39:02.893
In welcher Form auch immer.

00:39:04.072 --> 00:39:05.312
Ja, wird glaube ich auch immer empfohlen.

00:39:05.332 --> 00:39:07.592
Von einer Applikation, aber eben bei einer Library halt nicht.

00:39:07.592 --> 00:39:09.772
Weil da weiß ich ja gar nicht, was installiert wird.

00:39:09.852 --> 00:39:34.332
Ja, und genau, für den Anwendungsfall nehme ich halt, also eine Anwendung, die ich deploye, nehme ich halt PipTools und für den, ich habe ein Paket, wo ich ein Wheel oder irgendwas sonst wie ein Paket veröffentlichen möchte, nehme ich halt Flit, was jetzt, ich gucke manchmal so nach Hedge rüber, aber bisher hatte ich noch nicht so richtig den Grund irgendwie umzusteigen.

00:39:34.332 --> 00:39:54.133
Ja, wenn Flit4Dig funktioniert, das ist auch glaube ich das Wichtigste, was man von dem Ganzen mitnehmen kann. Packaging ist zwar super messy in Python, also es ist total schwierig da einzusteigen, weil Python eben nicht designt wurde mit einem Tool, was es alles kann, wie das bei Rust ist, weswegen ja viele Leute sehr begeistert sind von Rust, vor allem die Python kennen.

00:39:54.133 --> 00:39:56.072
Da läuft das sehr einfach

00:39:56.072 --> 00:39:58.032
Da hat man Cargo, was man

00:39:58.032 --> 00:40:00.032
benutzen kann für das Packaging

00:40:00.032 --> 00:40:02.133
und dann braucht man sich nicht die Gedanken machen über diese

00:40:02.133 --> 00:40:03.032
ganzen anderen Tools

00:40:03.032 --> 00:40:06.212
und verschiedene Tools bei Python

00:40:06.212 --> 00:40:07.973
lösen eben verschiedene Probleme und Flit

00:40:07.973 --> 00:40:10.153
ist super, wenn man ein reines Python-Paket

00:40:10.153 --> 00:40:11.212
hat und das einfach nur

00:40:11.212 --> 00:40:13.992
bilden möchte, also wenn man irgendwie ein

00:40:13.992 --> 00:40:16.092
Will-File braucht und das vielleicht dann noch publishen will

00:40:16.092 --> 00:40:18.072
und wenn das für einen selbst funktioniert, dann

00:40:18.072 --> 00:40:19.973
wunderbar, dann kann man das wirklich gut

00:40:19.973 --> 00:40:22.012
verwenden. Ich habe gerade noch daran gedacht, mit

00:40:22.012 --> 00:40:24.012
den Log-Files, was ihr gesagt hattet, mit

00:40:24.012 --> 00:40:28.212
und wie man das mit dem Unterschied zwischen abstrakten und konkreten Abhängigkeiten,

00:40:29.052 --> 00:40:33.852
das kann man vielleicht auch nochmal ganz gut in Verbindung mit dem PyProject-Hommelfile erklären,

00:40:34.013 --> 00:40:36.832
weil wenn man ein Paket baut, hat man eben PyProject-Hommelfile,

00:40:36.933 --> 00:40:40.792
wo die ganzen wichtigen Dinge über das Paket drinstehen.

00:40:41.013 --> 00:40:45.832
Das sind so Sachen wie der Name, wer der Autor ist, aber eben auch die Dependencies,

00:40:46.013 --> 00:40:51.493
dann kann man da für manche Tools auch genau sagen, wie die konfiguriert sein sollen,

00:40:51.493 --> 00:40:53.592
sowas wie Black zum Beispiel, wenn man Formatting

00:40:53.592 --> 00:40:55.732
benutzen möchte. Man kann da auch Skripte

00:40:55.732 --> 00:40:57.552
definieren, also man kann quasi super viel

00:40:57.552 --> 00:40:58.712
reinschreiben in dieses PyProject.

00:40:58.732 --> 00:41:01.013
Also die ganze Konfiguration löst halt diese

00:41:01.013 --> 00:41:03.212
PlayStore an Konfigurationsfiles ab, die dann irgendwo

00:41:03.212 --> 00:41:04.933
im Projekt-Root rumfliegen müssen.

00:41:06.232 --> 00:41:07.133
Ja, und

00:41:07.133 --> 00:41:09.852
die Dependencies, die man da reinschreibt,

00:41:09.933 --> 00:41:11.112
sind aber möglichst

00:41:11.112 --> 00:41:13.652
grob gehalten, würde ich mal sagen.

00:41:13.772 --> 00:41:15.873
Also da kann man Ranges angeben,

00:41:16.072 --> 00:41:17.672
welche Paketnummern gut sind,

00:41:17.772 --> 00:41:19.712
aber man sollte nicht auf genau

00:41:19.712 --> 00:41:21.792
die Version pinnen, die man haben möchte,

00:41:21.913 --> 00:41:23.953
wofür dann die meisten Tools eben automatisiert

00:41:23.953 --> 00:41:25.592
so ein Logfile erstellen, wie ihr das gerade

00:41:25.592 --> 00:41:27.692
beschrieben habt, sodass man das

00:41:27.692 --> 00:41:29.592
auch noch mitgeben kann in sein

00:41:29.592 --> 00:41:31.672
Repository oder Package,

00:41:31.792 --> 00:41:33.812
sodass alle genau das gleiche

00:41:33.812 --> 00:41:35.732
Setup reproduzieren können.

00:41:36.433 --> 00:41:37.532
Setup ist, glaube ich, ein gutes Stichwort.

00:41:37.633 --> 00:41:39.772
Ich glaube, früher hat Python das halt mit SetupPy

00:41:39.772 --> 00:41:40.913
gemacht und SetupTools

00:41:40.913 --> 00:41:43.692
und dann war das halt in Python und halt

00:41:43.692 --> 00:41:45.672
nicht in dieser deklarativen Tummel.

00:41:46.433 --> 00:41:47.712
Ja, die Geschichte davon

00:41:47.712 --> 00:41:49.592
ist auch, also da gibt es ja noch sehr viel mehr,

00:41:49.712 --> 00:41:51.752
gibt auch noch Disk-Utils und ach, was ist der Teufel.

00:41:52.272 --> 00:41:53.752
Ja, aber genau,

00:41:53.893 --> 00:41:55.692
also von der Setup-PY wollte man eigentlich

00:41:55.692 --> 00:41:57.592
wegkommen, weil irgendwie,

00:41:57.752 --> 00:41:59.913
naja, gut, viele Leute haben immer nur ihr altes

00:41:59.913 --> 00:42:01.413
Setup-PY, was sie sich irgendwann mal

00:42:01.413 --> 00:42:03.133
hingeschrieben haben, halt kopiert und

00:42:03.133 --> 00:42:05.792
aber, und das war halt

00:42:05.792 --> 00:42:07.393
so ein Problem, deswegen, ja,

00:42:07.832 --> 00:42:09.933
musste man quasi beliebig lange abwärtskompatibel

00:42:09.933 --> 00:42:11.933
bleiben mit allem und

00:42:11.933 --> 00:42:13.032
inzwischen

00:42:13.032 --> 00:42:15.913
sollte ja eigentlich für fast

00:42:15.913 --> 00:42:17.692
alles, was man tut, Setup-CFG

00:42:17.692 --> 00:42:19.312
ausreichen, irgendwie.

00:42:19.712 --> 00:42:21.752
Aber ja, das ist alles ein

00:42:21.752 --> 00:42:21.772
ein

00:42:21.772 --> 00:42:23.393
ein

00:42:23.393 --> 00:42:27.812
Es ist auch eben überraschend,

00:42:27.893 --> 00:42:29.192
finde ich, also ich habe gerade mal

00:42:29.192 --> 00:42:31.172
das PEP geöffnet von

00:42:31.172 --> 00:42:33.712
518, wo es

00:42:33.712 --> 00:42:35.712
darum geht, dass PyProject.toml eingeführt wird.

00:42:35.772 --> 00:42:36.792
Das ist von 2016.

00:42:37.413 --> 00:42:39.652
Also es ist schon echt eine Weile her und trotzdem begegnet

00:42:39.652 --> 00:42:41.572
mir das immer wieder, dass Leute noch setup.py

00:42:41.572 --> 00:42:43.572
benutzen, obwohl inzwischen

00:42:43.572 --> 00:42:45.312
das schon so weit verbreitet ist, dass man

00:42:45.312 --> 00:42:47.612
eine PyProject.toml-Datei hat,

00:42:47.612 --> 00:42:53.052
in der man im Tommel-Format eben definiert, wie das Paket aussieht und welche Abhängigkeiten es hat.

00:42:54.532 --> 00:42:57.913
Also was ich so ein bisschen anstrengend finde, ist, dass es ja keine Referenzen gibt in diesen Tommel-Files,

00:42:57.993 --> 00:43:01.552
dass du halt dann Redundanzen hinkriegst, wenn du mehrere Male diesen Namen verwenden willst

00:43:01.552 --> 00:43:04.832
in unterschiedlichen Sachen oder sowas, was manchmal so ein bisschen schade ist.

00:43:05.633 --> 00:43:09.572
Aber gut, es gibt Schlimmeres, als dann zweimal irgendwie den Projektnamen hinzuschreiben.

00:43:09.852 --> 00:43:13.592
Aber ja, also ich mag PyProject Tommel sehr gerne, ich benutze sie halt auch für alles

00:43:13.592 --> 00:43:17.532
und ich glaube mittlerweile sind die meisten Tools durch irgendwelche Tricks auch dazu,

00:43:17.612 --> 00:43:19.792
zu bringen, nur noch diese PyProjektumme

00:43:19.792 --> 00:43:20.893
zu nehmen, also Flake.

00:43:21.373 --> 00:43:23.592
Flake 8 ist halt so ein Kandidat für

00:43:23.592 --> 00:43:25.493
nee. Ja, genau, aber das geht auch.

00:43:25.612 --> 00:43:27.572
Da muss man halt ein extra Paket installieren, dann geht das.

00:43:27.633 --> 00:43:29.572
Das gibt halt so einen Fork

00:43:29.572 --> 00:43:31.712
davon quasi. PyTest oder so

00:43:31.712 --> 00:43:33.612
ist halt auch sehr schön darüber einstellbar.

00:43:33.732 --> 00:43:35.013
MyPy, Ruff

00:43:35.013 --> 00:43:37.572
und deine ganzen Tools halt, ne?

00:43:37.993 --> 00:43:39.332
Linting und sowas.

00:43:40.433 --> 00:43:41.172
Die Skripts

00:43:41.172 --> 00:43:43.652
finde ich auch sehr

00:43:43.652 --> 00:43:45.332
interessant, weil da gibt es ja auch verschiedene Sachen,

00:43:45.332 --> 00:43:47.172
um das noch zu lösen. Welche Skripts

00:43:47.172 --> 00:43:48.072
man irgendwie einhängen will.

00:43:48.933 --> 00:43:51.272
Ja, das finde ich auch ganz schön. Ich hatte das auch jetzt gerade

00:43:51.272 --> 00:43:53.052
im Kundenprojekt wieder, dass jemand

00:43:53.052 --> 00:43:54.792
Mac-File benutzen wollte, um

00:43:54.792 --> 00:43:57.252
bestimmte Kommandos,

00:43:57.272 --> 00:43:58.453
die man häufig ausführt,

00:43:59.152 --> 00:44:01.312
runterzuschreiben oder zu vereinfachen,

00:44:01.433 --> 00:44:03.232
weil der Person gar nicht bewusst war,

00:44:03.312 --> 00:44:05.052
dass man das auch im PyProject.toml-File

00:44:05.052 --> 00:44:07.052
definieren kann. Also wenn man zum Beispiel immer

00:44:07.052 --> 00:44:09.072
Python-minus-m

00:44:09.072 --> 00:44:11.152
unit-test-discover-test schreibt,

00:44:11.572 --> 00:44:13.252
dass man das einfach abkürzen

00:44:13.252 --> 00:44:15.252
kann, indem man in der PyProject.toml

00:44:15.252 --> 00:44:17.592
ein kleines Skript quasi definiert

00:44:17.592 --> 00:44:18.272
und dann sagt,

00:44:19.352 --> 00:44:21.532
dieser Befehl soll ausgeführt werden, wenn du

00:44:21.532 --> 00:44:23.252
Hedge, jetzt als Beispiel,

00:44:23.332 --> 00:44:25.493
Hedge ist eins von diesen Packaging-Tools, und wenn du

00:44:25.493 --> 00:44:27.072
Hedge, Run, Test

00:44:27.072 --> 00:44:29.292
schreibst in dein Terminal,

00:44:29.413 --> 00:44:30.913
dann wird eben dieser Befehl ausgeführt.

00:44:32.672 --> 00:44:33.252
Finde ich

00:44:33.252 --> 00:44:34.772
unheimlich praktisch.

00:44:35.152 --> 00:44:36.973
Habe ich schon sehr viel benutzt, benutze ich auch sehr viel.

00:44:37.812 --> 00:44:38.993
Ich habe mir meinen eigenen Webpack geschrieben,

00:44:39.552 --> 00:44:41.133
bei mir ist es dann cc,

00:44:41.513 --> 00:44:42.453
weil ich habe meinen c-Compiler

00:44:42.453 --> 00:44:44.473
die linkt und dann

00:44:44.473 --> 00:44:47.393
einfach cc up, cc start, cc test

00:44:47.393 --> 00:44:48.852
call command

00:44:48.852 --> 00:44:51.272
Aber man muss dafür das Paket quasi

00:44:51.272 --> 00:44:53.172
installieren im aktuellen

00:44:53.172 --> 00:44:53.772
Environment, ne?

00:44:54.873 --> 00:44:55.072
Genau

00:44:55.072 --> 00:44:59.292
Wenn ich jetzt in einem Projekt bin

00:44:59.292 --> 00:45:01.112
also sagen wir mal, ich habe ein Django-Projekt

00:45:01.112 --> 00:45:03.332
oder so, dann installiere ich das ja gar nicht als Paket

00:45:03.332 --> 00:45:03.752
oft

00:45:03.752 --> 00:45:07.453
Da ist halt wieder so

00:45:07.453 --> 00:45:09.232
diese Unterscheidung, wenn ich ein Paket

00:45:09.232 --> 00:45:11.112
entwickle, okay, dann habe ich das normalerweise auch

00:45:11.112 --> 00:45:13.252
immer in einer editierbaren

00:45:13.252 --> 00:45:15.072
Version installiert im aktuellen Environment,

00:45:15.352 --> 00:45:17.232
aber das ist wieder diese Unterscheidung

00:45:17.232 --> 00:45:19.172
zwischen Library und

00:45:19.172 --> 00:45:21.013
install-e oder sowas,

00:45:21.232 --> 00:45:23.373
also editable installiert ist

00:45:23.373 --> 00:45:25.312
eine der Features, die nicht jedes

00:45:25.312 --> 00:45:27.212
von diesen Tools unterstützt. Ja, da hat

00:45:27.212 --> 00:45:28.852
Poetry auch lange Probleme mit, ja.

00:45:29.092 --> 00:45:29.192
Ja.

00:45:31.893 --> 00:45:33.133
Aber genau,

00:45:33.373 --> 00:45:35.013
damit geht das gut. Ja, ich bin inzwischen

00:45:35.013 --> 00:45:35.712
also gerade bei

00:45:35.712 --> 00:45:38.152
ich bin bei einem

00:45:38.152 --> 00:45:40.612
eigenen Skript, das ich halt in alle

00:45:40.612 --> 00:45:43.092
Projekte reinlege oder

00:45:43.092 --> 00:45:43.832
so, weil

00:45:43.832 --> 00:45:47.032
es oft auch so ist, wenn man das zum ersten Mal

00:45:47.032 --> 00:45:49.092
ausführt, dann kann ich halt so Dinge

00:45:49.092 --> 00:45:50.272
machen, wie ich mache halt ein

00:45:50.272 --> 00:45:53.172
try-except-um-import und wenn die da nicht da

00:45:53.172 --> 00:45:54.772
sind, dann gucke ich halt, ob ich irgendwo das

00:45:54.772 --> 00:45:56.413
Log-File finde und dann installiere ich das erstmal,

00:45:56.592 --> 00:45:59.133
erzeuge ein Virtual-Env und mache halt so,

00:45:59.252 --> 00:46:01.052
sodass halt, wenn jemand, auch wenn jemand

00:46:01.052 --> 00:46:02.552
keine Ahnung hat, einfach irgendwas ausführt,

00:46:02.832 --> 00:46:05.252
das dann trotzdem funktioniert. Das geht halt, wenn man ein eigenes Skript hat,

00:46:05.433 --> 00:46:07.552
relativ gut, aber ansonsten

00:46:07.552 --> 00:46:10.953
wenn man den Leuten dann noch erklären muss, nee, du musst erst

00:46:10.953 --> 00:46:13.112
Pakete installieren und dann so, welches Paket?

00:46:13.652 --> 00:46:15.072
Okay, und dann ist es halt immer noch mal

00:46:15.072 --> 00:46:15.493
eine Hürde.

00:46:16.552 --> 00:46:19.013
Ja, ich weiß es nicht. Ich habe da auch keine gute Lösung

00:46:19.013 --> 00:46:19.212
für.

00:46:20.572 --> 00:46:22.612
Ich habe gerade noch daran gedacht, dass es vielleicht auch

00:46:22.612 --> 00:46:24.792
ganz hilfreich ist, einmal zu erwähnen, dass diese

00:46:24.792 --> 00:46:26.993
Tools, die wir jetzt gerade schon genannt haben,

00:46:27.072 --> 00:46:28.933
sowas wie Hedge oder Poetry, PDM,

00:46:29.433 --> 00:46:30.352
Rye, dass die

00:46:30.352 --> 00:46:32.852
für dieses Virtual Environment

00:46:32.852 --> 00:46:34.672
Handling machen. Also, dass man da gar keine

00:46:34.672 --> 00:46:36.272
Virtual Environments mehr selbst erstellt,

00:46:36.772 --> 00:46:38.712
sondern man installiert das Tool und dann kann man

00:46:38.712 --> 00:46:40.712
beispielsweise sagen,

00:46:40.953 --> 00:47:02.965
Hedge Run und dann Python main oder was auch immer Und dann l Hedge dieses Skript innerhalb eines Virtual Environments laufen wo alle diese Dependencies die man im PyProject definiert hat schon installiert sind Sprich man muss das nicht mehr manuell erstellen dieses Virtual Environment Das wird dann f einen gemacht

00:47:05.865 --> 00:47:13.025
Ja, dann, also Poetry zum Beispiel, das kann man halt auch dann konfigurieren, dass halt alle Vents in einem bestimmten Ordner liegen, wenn man das gerne hätte.

00:47:13.025 --> 00:47:14.965
oder dass sie halt im Projekt liegen.

00:47:15.105 --> 00:47:16.965
Also das gibt ja diese zwei Varianten. Ich weiß nicht,

00:47:17.085 --> 00:47:19.185
wozu ihr da tendiert. Vielleicht auch ein bisschen die Frage,

00:47:19.245 --> 00:47:21.045
ob man ein Dev macht, wo man halt zwischen den Wemps

00:47:21.045 --> 00:47:22.685
vergleichen will oder ob man das halt

00:47:22.685 --> 00:47:25.105
ein Prot macht, wo man das vielleicht direkt ins Projekt legt

00:47:25.105 --> 00:47:26.785
oder irgendwo nach Opt oder

00:47:26.785 --> 00:47:28.945
ich weiß nicht. Häufig einfach

00:47:28.945 --> 00:47:30.025
den Default benutzt.

00:47:30.505 --> 00:47:32.825
Also es ist unterschiedlich. Für

00:47:32.825 --> 00:47:34.805
Entwicklungen lege ich die ganzen Virtual Enders in

00:47:34.805 --> 00:47:36.565
ein Verzeichnis, damit ich halt nur

00:47:36.565 --> 00:47:38.805
bei einem Verzeichnis lagen muss, dieses Verzeichnis bitte

00:47:38.805 --> 00:47:39.385
nicht backuppen.

00:47:40.885 --> 00:47:42.845
Ansonsten müsste ich eine Regel haben, die das

00:47:42.845 --> 00:47:44.725
halt für alle, die halt immer rausfindet,

00:47:44.765 --> 00:47:46.605
was ist das Virtual Env in einem Projekt

00:47:46.605 --> 00:47:48.165
und dann das dann halt nicht backupt.

00:47:48.765 --> 00:47:50.625
Was auch geht, aber ist halt komplizierter und

00:47:50.625 --> 00:47:52.545
wenn ich mich dann an diese Regel selber mal nicht halte, dann

00:47:52.545 --> 00:47:54.765
wird halt ein Virtual Env gebackupt, was halt doof ist.

00:47:54.905 --> 00:47:56.525
Ja, also ich habe aber tatsächlich schon gesehen, dass

00:47:56.525 --> 00:47:58.625
tatsächlich sogar die VEMs Teil der Version Control

00:47:58.625 --> 00:48:00.485
sind. Ja, das ist natürlich,

00:48:00.605 --> 00:48:02.525
nee, also das würde ich gar nicht machen, aber das

00:48:02.525 --> 00:48:04.365
habe ich schon gefunden, weil die Leute halt irgendwie

00:48:04.365 --> 00:48:06.425
die brauchen, reproduzierbar

00:48:06.425 --> 00:48:08.685
auch irgendwie auf ihren Systemen, dann halt tatsächlich

00:48:08.685 --> 00:48:10.465
einfach die VEMs

00:48:10.465 --> 00:48:12.505
auschecken und dann haben sie die schon, ohne

00:48:12.505 --> 00:48:14.105
dass sie diesen ganzen Hustle machen müssen

00:48:14.105 --> 00:48:16.265
oder die wird halt irgendwie gesippt und halt dazugelegt

00:48:16.265 --> 00:48:18.665
weil man die dann für alte Versionen

00:48:18.665 --> 00:48:20.425
halt einfach dann dabei hat und nicht funktioniert direkt

00:48:20.425 --> 00:48:22.105
wenn man dann halt jetzt nicht

00:48:22.105 --> 00:48:24.305
also den Python nur gelinkt hat

00:48:24.305 --> 00:48:26.645
sondern das halt als hart dahin geschrieben hat

00:48:26.645 --> 00:48:28.505
dann könnte das sogar funktionieren

00:48:29.445 --> 00:48:29.785
also

00:48:29.785 --> 00:48:31.325
ich habe Zweifel

00:48:31.325 --> 00:48:34.525
ja gut, aber das ist halt wieder genau so ein Punkt, wo wir halt merken

00:48:34.525 --> 00:48:36.345
es gibt halt ganz ganz viele verschiedene Lösungen

00:48:36.345 --> 00:48:38.025
für dieses Problem, wie

00:48:38.025 --> 00:48:40.145
laufe ich denn überhaupt mit Python an

00:48:40.145 --> 00:48:42.425
die alle nicht so richtig

00:48:42.425 --> 00:48:44.425
gut funktionieren und so.

00:48:45.525 --> 00:48:46.405
Alle Probleme

00:48:46.405 --> 00:48:47.485
haben an irgendwelchen Edge-Cases.

00:48:48.085 --> 00:48:50.505
Das Beispiel Rust ist da glaube ich echt ein gutes.

00:48:50.705 --> 00:48:52.465
Du machst Rust ab und hast dann Argo

00:48:52.465 --> 00:48:52.765
und sowas.

00:48:53.525 --> 00:48:56.505
Das wird ja dann auch oft vorgeschlagen.

00:48:56.745 --> 00:48:58.065
Warum machen wir es nicht einfach wie

00:48:58.065 --> 00:49:00.105
Rust jetzt sozusagen in der Python-Welt?

00:49:00.225 --> 00:49:02.445
Dann sind wir dieses Problem los. Das funktioniert halt nicht,

00:49:02.565 --> 00:49:04.545
weil Python halt so alt ist und es so viele

00:49:04.545 --> 00:49:06.245
Dinge gibt. Also tatsächlich

00:49:06.245 --> 00:49:08.445
größere Teile des Ökosystems würden, wenn

00:49:08.445 --> 00:49:10.385
du sagst, okay, das ist jetzt der Weg, wie wir das

00:49:10.385 --> 00:49:11.865
machen, halt einfach nicht mehr funktionieren.

00:49:11.865 --> 00:49:14.205
und dann kannst du es halt eigentlich auch nicht machen.

00:49:14.725 --> 00:49:15.565
Also zum Beispiel den

00:49:15.565 --> 00:49:17.485
PySupport einstellen,

00:49:17.805 --> 00:49:20.085
das haben auch Leute schon angedacht oder probiert

00:49:20.085 --> 00:49:21.845
und dann bei den Diskussionen kamen wir raus,

00:49:21.925 --> 00:49:24.165
es ist unmöglich, es geht nicht, kann man nicht machen.

00:49:24.225 --> 00:49:25.065
Also wer peistet 4 dann?

00:49:25.925 --> 00:49:28.225
Das will auch keiner mehr machen.

00:49:28.365 --> 00:49:29.025
Das will auch keiner machen.

00:49:29.265 --> 00:49:31.925
Das ist so ein harter, solche harten

00:49:31.925 --> 00:49:34.065
Incompetitivitäten, das wird nicht mehr passieren, glaube ich.

00:49:34.945 --> 00:49:35.505
Ja, es ist,

00:49:35.965 --> 00:49:38.485
aber genau, also auch Produktivgeschichten,

00:49:38.585 --> 00:49:39.925
da mache ich das so, dass ich das Virtual Env

00:49:39.925 --> 00:49:41.865
in das Projekt

00:49:41.865 --> 00:49:43.925
selber mit reinlege. Einfach deswegen,

00:49:44.085 --> 00:49:45.905
weil ich dann sozusagen alles

00:49:45.905 --> 00:49:48.005
an einem Platz habe und halt auch wenn ich es dann entferne,

00:49:49.025 --> 00:49:50.025
auch nur ein Verzeichnis

00:49:50.025 --> 00:49:51.765
entfernen muss und nicht noch gucken muss,

00:49:51.845 --> 00:49:53.405
oh, da gibt es noch das Virtual, oh, da gibt es ja noch

00:49:53.405 --> 00:49:55.965
die Datenbank, da gibt es noch dieses Ding, was ich auch noch mit

00:49:55.965 --> 00:49:58.065
entfernen, sondern dann entferne ich das eine Ding und dann fertig.

00:49:58.245 --> 00:49:59.865
Ja, also ich habe das

00:49:59.865 --> 00:50:01.745
tatsächlich unter Opt und dann halt

00:50:01.745 --> 00:50:03.785
die Python-Sachen alle da an einer Stelle,

00:50:03.905 --> 00:50:06.125
die für das Projekt da sind. Okay, auch interessant, ja.

00:50:06.225 --> 00:50:07.845
Und dann habe ich halt quasi das Projekt, also den Code

00:50:07.845 --> 00:50:11.285
vom Projekt und den Code von dem, was für das Projekt zum Lauf notwendig ist.

00:50:12.225 --> 00:50:13.365
Also zwei Sachen, aber ja.

00:50:15.505 --> 00:50:19.285
Ich habe gerade noch daran gedacht, Hedge zum Beispiel ist eines der Tools, die ich recht häufig benutze,

00:50:19.365 --> 00:50:23.505
einfach auch nur, weil ich irgendwann damit angefangen habe und das ganz nett finde. Und das hat so ein tolles Feature

00:50:23.505 --> 00:50:27.845
für die Virtual Environments, dass man im PyProject.toml-File eben auch definieren

00:50:27.845 --> 00:50:31.605
kann, deklarativ, welche verschiedenen Virtual Environments man haben möchte.

00:50:32.145 --> 00:50:35.685
Und ich habe beispielsweise häufig eins für Styling, also wo man

00:50:35.685 --> 00:50:38.265
was dann Black über alle Sachen laufen lässt

00:50:38.265 --> 00:50:40.345
also da sind da die Dependencies nur

00:50:40.345 --> 00:50:42.385
wie Black, Rough und ähnliches

00:50:42.385 --> 00:50:44.565
installiert und auch die Skripte dafür

00:50:44.565 --> 00:50:46.685
und dann habe ich ein Virtual Environment

00:50:46.685 --> 00:50:48.145
für die Documentation

00:50:48.145 --> 00:50:50.265
ich benutze zum Beispiel Material for MKDocs

00:50:51.165 --> 00:50:52.385
wo das dann installiert ist

00:50:52.385 --> 00:50:54.305
und dann kann man halt wirklich ganz strukturiert sagen

00:50:54.305 --> 00:50:55.345
okay, diese verschiedenen

00:50:55.345 --> 00:50:57.585
Anwendungsfälle oder

00:50:57.585 --> 00:51:00.385
das mache ich in meinem Workflow und dafür

00:51:00.385 --> 00:51:02.245
brauche ich nur diese Dependencies

00:51:02.245 --> 00:51:03.485
und dann kann man das wirklich schön

00:51:03.485 --> 00:51:06.005
organisiert runterschreiben, PyProject.toml.

00:51:06.045 --> 00:51:08.065
Das finde ich irgendwie total angenehm,

00:51:08.125 --> 00:51:09.945
weil das so viel besser

00:51:09.945 --> 00:51:10.965
nach außen kommuniziert.

00:51:11.005 --> 00:51:13.545
Pulti hat das auch irgendwann eingeführt als Groups.

00:51:14.205 --> 00:51:16.045
Und tatsächlich, du kannst halt die Gruppen

00:51:16.045 --> 00:51:17.525
optional machen oder halt nicht.

00:51:17.685 --> 00:51:20.145
Die nicht-optionalen Gruppen sind halt die absolut notwendigsten,

00:51:20.265 --> 00:51:21.885
damit die Anwendung läuft. Und halt solche Sachen wie

00:51:21.885 --> 00:51:23.545
Docs oder wie Tests oder sowas

00:51:23.545 --> 00:51:25.105
können halt eigene Gruppen haben.

00:51:26.325 --> 00:51:27.625
Da hatten wir mal mit Johannes drüber gesprochen.

00:51:27.745 --> 00:51:30.025
Johannes meinte, totaler Quatsch. Du brauchst eigentlich

00:51:30.025 --> 00:51:32.125
nur zwei und das ist defenbrot.

00:51:32.125 --> 00:51:34.325
Kann man auch vertreten?

00:51:34.705 --> 00:51:36.665
Ja, also ist halt die Frage, braucht man

00:51:36.665 --> 00:51:38.865
so einen Fall, wo man nur linden will oder wo man

00:51:38.865 --> 00:51:40.785
nur Docs angucken will oder so

00:51:40.785 --> 00:51:42.845
Ja, also mein Argument dafür wäre halt auch genau

00:51:42.845 --> 00:51:44.765
weil ich hab, also oft hat man

00:51:44.765 --> 00:51:46.765
dann implizit ja doch mehrere, zum Beispiel

00:51:46.765 --> 00:51:48.745
wenn man sowas wie Precommit Hooks verwendet

00:51:48.745 --> 00:51:50.705
weil Precommit kümmert sich ja auch wieder selber darum

00:51:50.705 --> 00:51:52.725
und dann hast du es aber implizit irgendwie

00:51:52.725 --> 00:51:55.025
und es wäre natürlich vielleicht schöner

00:51:55.025 --> 00:51:56.645
das explizit irgendwo

00:51:56.645 --> 00:51:58.085
stehen zu haben, wo das

00:51:58.085 --> 00:52:00.185
ja, also

00:52:00.185 --> 00:52:02.285
Precommit MyPy ist zum Beispiel so ein Kandidat,

00:52:02.365 --> 00:52:04.085
der unheimlich nervig ist, weil das halt...

00:52:04.085 --> 00:52:05.545
Ja, genau.

00:52:06.265 --> 00:52:06.465
Also

00:52:06.465 --> 00:52:10.245
ich würde sagen, wenn man

00:52:10.245 --> 00:52:12.205
nur Dev und Pod haben will, dann

00:52:12.205 --> 00:52:14.305
schafft man das nicht, weil man hat ja zumindest

00:52:14.305 --> 00:52:15.365
noch das für Precommit.

00:52:16.325 --> 00:52:18.305
Und das heißt, dann hat man nochmal einen Ort,

00:52:18.385 --> 00:52:20.005
wo man das pflegen muss. Es steht ja auch nicht in der PyProject

00:52:20.005 --> 00:52:22.225
Tunnel drin, sondern es steht dann auch wieder in

00:52:22.225 --> 00:52:23.545
dem Precommit-Jammel.

00:52:25.085 --> 00:52:25.925
Das ist unmesslich.

00:52:26.005 --> 00:52:27.725
Bei mir sind halt so Gruppen, die sind alle optional,

00:52:28.245 --> 00:52:29.945
die ich alle per Default dann wieder copy und paste,

00:52:29.945 --> 00:52:59.925
und so weiter.

00:52:59.945 --> 00:53:01.565
Update von der Major Python machst, dann

00:53:01.565 --> 00:53:04.025
fliegt Poetry oft auf die Nase. Das ist fürchterlich.

00:53:04.365 --> 00:53:05.585
Vielleicht ist das jetzt neu besser.

00:53:05.825 --> 00:53:07.705
Also auch so ein Ding. Poetry hat irgendwie

00:53:07.705 --> 00:53:09.705
zweimal ein Update gemacht, das so

00:53:09.705 --> 00:53:11.565
Breaking Changes eingebaut hat, wo es dann,

00:53:11.825 --> 00:53:13.785
das war halt so sehr, sehr nervig. Wirklich böse Dinge gemacht.

00:53:13.905 --> 00:53:15.965
Ja, das war halt der Hauptgrund, warum viele Leute gesagt haben,

00:53:16.065 --> 00:53:17.445
so ein Ding, die fasse ich jetzt nicht mehr an, weil

00:53:17.445 --> 00:53:19.465
sowas geht halt eigentlich nicht. Genau. Ja.

00:53:19.965 --> 00:53:21.685
Das habe ich auch total viel mitbekommen. Also ich habe

00:53:21.685 --> 00:53:23.865
selbst schon Poetry benutzt. Das hat für mich immer gut funktioniert

00:53:23.865 --> 00:53:25.225
und ich finde es auch ein gutes Tool.

00:53:25.785 --> 00:53:27.345
Aber ich habe voll viele Leute,

00:53:27.785 --> 00:53:29.525
von voll vielen Leuten das mitbekommen, die dann

00:53:29.525 --> 00:53:59.525
und das ist ein Test, das wir in der Zeit, in der wir in der Zeit, in der wir in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der Zeit, in der

00:53:59.525 --> 00:54:01.945
Ja, ich glaube, der Ton in den

00:54:01.945 --> 00:54:03.665
Requests und an den Issues

00:54:03.665 --> 00:54:04.705
war auch so ein bisschen rau.

00:54:04.705 --> 00:54:06.585
Das war, einige Leute

00:54:06.585 --> 00:54:07.305
waren das auch nicht so gut.

00:54:08.265 --> 00:54:10.345
Poetry ist halt auch so ein Sonderfall, habe ich manchmal das Gefühl.

00:54:10.905 --> 00:54:12.425
Ich hatte mir so ein paar

00:54:12.425 --> 00:54:14.845
Kriterien

00:54:14.845 --> 00:54:16.505
rausgesucht, um die verschiedenen Tools zu

00:54:16.505 --> 00:54:18.265
vergleichen, damit es eben wirklich so ein bisschen

00:54:18.265 --> 00:54:20.465
unbiased ist und nicht nur meine persönliche

00:54:20.465 --> 00:54:21.725
Präferenz mit reinfließt.

00:54:22.465 --> 00:54:23.825
Und es gibt ein PEP

00:54:23.825 --> 00:54:26.125
621, da geht es darum,

00:54:26.525 --> 00:54:28.345
wie man Metadata in

00:54:28.345 --> 00:54:30.085
der PyProject Tommel aufschreibt.

00:54:30.305 --> 00:54:31.965
Also in welchem Weg. Und da

00:54:31.965 --> 00:54:33.985
wurde halt irgendwann ein Standard definiert,

00:54:34.145 --> 00:54:36.245
den die meisten Tools vertreten. Nur Poetry hat da

00:54:36.245 --> 00:54:38.325
seine Extrawurst und macht

00:54:38.325 --> 00:54:40.425
das anders, was ja auch in Ordnung ist,

00:54:40.545 --> 00:54:42.125
dadurch, dass sie es von Anfang an anders

00:54:42.125 --> 00:54:44.045
gemacht haben. Aber es gibt, glaube ich, seit

00:54:44.045 --> 00:54:46.165
eineinhalb Jahren schon offenes

00:54:46.165 --> 00:54:48.145
Issue dazu auf GitHub und

00:54:48.145 --> 00:54:50.265
sie wollen es auch irgendwann machen, aber sie haben es halt immer noch

00:54:50.265 --> 00:54:51.865
nicht gemacht. Und ich glaube,

00:54:52.165 --> 00:54:54.165
so ein paar Besonderheiten muss man da schon im Kopf behalten,

00:54:54.245 --> 00:54:55.505
wenn man dann Poetry benutzen will.

00:54:56.185 --> 00:54:57.225
Ja, also das war auch,

00:54:57.225 --> 00:54:59.365
als ich dann irgendwie auch Probleme mit

00:54:59.365 --> 00:55:01.345
Poetima bekommen habe und dann halt da auch angefangen habe

00:55:01.345 --> 00:55:03.245
Issues aufzumachen und dann

00:55:03.245 --> 00:55:05.345
mir das Open Issues

00:55:05.345 --> 00:55:06.785
Ding mal angeguckt habe, dass ich so

00:55:06.785 --> 00:55:09.305
also letztlich glaube ich, ist das

00:55:09.305 --> 00:55:11.245
einer, der auch eigentlich als Freelancer

00:55:11.245 --> 00:55:13.185
arbeitet, der das halt auch nicht Vollzeit macht, sondern

00:55:13.185 --> 00:55:14.465
halt auch so in seiner Freizeit

00:55:14.465 --> 00:55:17.385
und zu dem Zeitpunkt, wie es heute ist, weiß ich nicht

00:55:17.385 --> 00:55:19.285
und da waren halt tausend offene

00:55:19.285 --> 00:55:20.305
Issues in dem Projekt

00:55:20.305 --> 00:55:23.305
und einige schon sehr sehr lange

00:55:23.305 --> 00:55:24.725
offen und ja

00:55:24.725 --> 00:55:26.265
naja

00:55:26.265 --> 00:55:29.565
Ich meine, es ist ja klar, dass man das nicht so hinkriegen kann

00:55:29.565 --> 00:55:32.065
gerade wenn das dann halt viel verwendet wird

00:55:32.065 --> 00:55:33.965
dann wird man halt erschlagen von dem Ansturm von Leuten

00:55:33.965 --> 00:55:35.685
die irgendwas ändern wollen oder

00:55:35.685 --> 00:55:37.645
Probleme gefunden haben, aber

00:55:37.645 --> 00:55:38.465
ja

00:55:38.465 --> 00:55:41.485
ist halt für Leute

00:55:41.485 --> 00:55:42.325
ein Problem

00:55:42.325 --> 00:55:49.945
Wo würdest du denn den Unterschied sehen zu Hedge

00:55:49.945 --> 00:55:51.285
oder Rye?

00:55:51.745 --> 00:55:53.905
Kann man das irgendwie kategorisieren, wo da die Unterschiede liegen?

00:55:55.425 --> 00:55:56.165
Also ich habe so ein bisschen

00:55:56.165 --> 00:55:58.125
kategorisiert aufgrund der

00:55:58.125 --> 00:56:00.065
Dinge, die sie tun können. Beispielsweise

00:56:00.065 --> 00:56:01.885
ist Rai somit das einzige Tool,

00:56:02.085 --> 00:56:04.105
was wirklich alles kann, eben auch Python Version

00:56:04.105 --> 00:56:06.125
Management, dadurch, dass es eben

00:56:06.125 --> 00:56:07.805
nicht in Python geschrieben ist, sondern in Rust

00:56:07.805 --> 00:56:09.405
und man

00:56:09.405 --> 00:56:11.885
dann eben alles in einem Tool

00:56:11.885 --> 00:56:13.505
machen kann. Ja, auch so

00:56:13.505 --> 00:56:16.005
Project Scatboarding oder sowas, fürchterlich opinionated

00:56:16.005 --> 00:56:16.425
und dann so

00:56:16.425 --> 00:56:18.625
Sorry.

00:56:19.705 --> 00:56:22.185
Kein Problem. Genau, und da gibt es

00:56:22.185 --> 00:56:23.705
PDM, Poetry,

00:56:24.265 --> 00:56:26.065
Hedge, die nochmal so

00:56:26.065 --> 00:56:56.045
und wie man das mit Python umsetzen kann.

00:56:56.065 --> 00:57:02.405
in irgendein Paket und dann fügt Poetry das in die PyProject.toml-File hinzu und macht auch,

00:57:03.285 --> 00:57:07.405
versucht die Dependency-Konflikte zu lösen und das kann Hedge noch nicht.

00:57:08.405 --> 00:57:14.145
Der hat immer angekündigt, dass er das noch implementieren wird, aber bisher ist es noch nicht da.

00:57:14.285 --> 00:57:17.085
Es sei denn, das wurde jetzt die letzten Tage hinzugefügt, aber ich habe es noch nicht gesehen.

00:57:18.345 --> 00:57:20.345
Genau, ich glaube, das kommt so ein bisschen auf den Use Case drauf an.

00:57:20.445 --> 00:57:21.645
Flit hatten wir ja auch schon besprochen.

00:57:21.645 --> 00:57:25.645
Flit ist halt eben wirklich dazu gedacht, wenn man einfach nur ein Package bilden und

00:57:25.645 --> 00:57:28.185
publishen möchte und vor allem ein Package, was keinen

00:57:28.185 --> 00:57:33.705
C-Code hat oder ähnliches, sondern wirklich nur Python-Code. Ich glaube,

00:57:33.785 --> 00:57:37.645
das ist ganz gut, wenn man sich vorher einmal überlegt, was möchte ich überhaupt machen und

00:57:37.645 --> 00:57:41.485
dann dementsprechend sich das Tool raussucht. Ich muss aber auch sagen, dass

00:57:41.485 --> 00:57:45.585
bei diesen ganzen Tools letztlich die persönliche Präferenz und was das Team

00:57:45.585 --> 00:57:48.945
macht auch eine riesengroße Rolle spielt. Wenn jetzt alle im Team Poetry benutzen,

00:57:48.945 --> 00:57:51.345
wird es wahrscheinlich schwierig

00:57:51.345 --> 00:57:53.545
Hedge zu benutzen, weil in der PyProject.toml

00:57:53.545 --> 00:57:55.545
Fall eben auch das Build-Backend definiert

00:57:55.545 --> 00:57:57.425
ist und da steht

00:57:57.425 --> 00:57:58.265
dann eben Poet für drin.

00:57:58.545 --> 00:58:00.265
Vielleicht nochmal ganz kurz zu dem Packaging.

00:58:01.505 --> 00:58:03.065
Ihr wollt ein Paket auf

00:58:03.065 --> 00:58:05.325
PyPI veröffentlichen, das ist so das,

00:58:05.405 --> 00:58:05.905
was dahinter steht.

00:58:07.745 --> 00:58:09.225
Du meinst mit dem Publishen gerade?

00:58:09.425 --> 00:58:09.525
Ja.

00:58:10.725 --> 00:58:13.385
Ja, genau, stimmt. Das kann man vielleicht nochmal einmal kurz erklären,

00:58:13.485 --> 00:58:15.485
dass man bei Packaging zwei verschiedene

00:58:15.485 --> 00:58:17.445
Schritte dann hat. Also man kann das

00:58:17.445 --> 00:58:27.925
und den Bildschritt machen. Das bedeutet, dass ein wheel-File erstellt wird, was so das Format ist, mit dem das Package beschrieben wird.

00:58:28.025 --> 00:58:35.725
Und da ist dann wirklich auch alles drin, was das Package braucht. Das ist auch letztlich das, was von PyPI gezogen wird, wenn man pip install was auch immer macht.

00:58:35.725 --> 00:58:37.785
und es wird ein tarball-File

00:58:37.785 --> 00:58:39.825
erstellt, so .tar.gz

00:58:39.825 --> 00:58:41.845
und der Publish

00:58:41.845 --> 00:58:44.265
Step ist

00:58:44.265 --> 00:58:45.505
dann, dass man diese

00:58:45.505 --> 00:58:47.885
Dateien zu PyPI oder zu

00:58:47.885 --> 00:58:49.745
irgendeinem anderen Index veröffentlicht,

00:58:50.205 --> 00:58:51.845
was man ja gar nicht unbedingt machen möchte. Manchmal

00:58:51.845 --> 00:58:53.845
reicht es auch schon, wenn man ein whale-File erstellt, was

00:58:53.845 --> 00:58:55.765
man dann lokal hat, was andere installieren können.

00:58:58.565 --> 00:58:59.605
Für wheels vielleicht noch,

00:58:59.785 --> 00:59:01.705
bei Windows gibt es Golke,

00:59:02.665 --> 00:59:03.885
eine wundervolle

00:59:03.885 --> 00:59:05.845
Bibliothek von

00:59:05.845 --> 00:59:08.185
gut gepatchten Wheels

00:59:08.185 --> 00:59:10.145
für Pakete, die man sonst bei Windows

00:59:10.145 --> 00:59:12.045
nicht einfach so installieren kann, weil man die irgendwie selber kompilieren

00:59:12.045 --> 00:59:14.125
müsste, wo dann Kompilierungs-Tools-Probleme auftauchen

00:59:14.125 --> 00:59:16.045
können oder die es nicht gibt, aber

00:59:16.045 --> 00:59:17.825
auf Windows geht es immer. Also super tolle Quelle.

00:59:17.965 --> 00:59:20.065
Ich merke schon, wenn ich irgendwann mal doch Windows benutzen

00:59:20.065 --> 00:59:21.245
muss, dann werde ich auf dich zukommen.

00:59:21.385 --> 00:59:23.905
Es ist einfach so viel Quatsch, wenn man irgendwann mal gegenfährt.

00:59:24.745 --> 00:59:25.785
Irgendwann geht es dann vielleicht, ja.

00:59:27.665 --> 00:59:27.925
Ich habe

00:59:27.925 --> 00:59:29.845
letztens, hat jemand einen

00:59:29.845 --> 00:59:32.165
ganz alten Webcomic repostet

00:59:32.165 --> 00:59:34.005
auf Mastodon

00:59:34.005 --> 00:59:36.265
von 2004 oder so.

00:59:37.565 --> 00:59:38.365
Ich weiß nicht,

00:59:38.585 --> 00:59:39.645
welcher Webcomic das jetzt war.

00:59:39.985 --> 00:59:40.885
Man sieht halt irgendwie so

00:59:40.885 --> 00:59:43.725
Star Trek-Setting und im Hintergrund

00:59:43.725 --> 00:59:46.065
Klingonen sich mit so Schmerzstöcken

00:59:46.065 --> 00:59:47.925
quälen und im Vordergrund sagt so

00:59:47.925 --> 00:59:49.965
Oh, ich habe was noch viel härteres gefunden als

00:59:49.965 --> 00:59:51.885
Schmerzstöcke. Ich sitze hier einfach

00:59:51.885 --> 00:59:53.585
Windows auf meinem Laptop.

00:59:57.545 --> 00:59:58.205
Obwohl man

00:59:58.205 --> 00:59:59.545
tatsächlich dazu sagen muss,

00:59:59.545 --> 01:00:00.965
also mit den neuesten

01:00:00.965 --> 01:00:03.185
PowerShells und den neuesten

01:00:03.185 --> 01:00:04.585
Windows-Terminals und

01:00:04.585 --> 01:00:07.145
wenn man das so ein bisschen beherrscht,

01:00:07.805 --> 01:00:09.005
kann man auch ohne WSL

01:00:09.005 --> 01:00:11.005
einigermaßen gut entwickeln.

01:00:11.085 --> 01:00:13.265
Es gibt halt so ein paar Sachen, die gibt es noch nicht als Pakete.

01:00:14.485 --> 01:00:15.045
FSEvent oder

01:00:15.045 --> 01:00:16.625
aber die meisten Sachen gehen

01:00:16.625 --> 01:00:18.785
ordentlich. Mittlerweile

01:00:18.785 --> 01:00:20.785
würde ich jetzt behaupten,

01:00:20.785 --> 01:00:23.085
auch auf Windows. Du kennst dich damit sicherlich gut aus.

01:00:23.185 --> 01:00:24.905
Ja, ich muss halt damit die ganze Zeit arbeiten. Also ich würde es

01:00:24.905 --> 01:00:27.005
auch nicht unbedingt immer machen wollen, aber es geht

01:00:27.005 --> 01:00:27.825
irgendwie schon.

01:00:28.945 --> 01:00:30.165
Also ich brauche kein Docker mehr,

01:00:30.165 --> 01:00:31.585
wie es vorher die ganze Zeit war.

01:00:31.665 --> 01:00:33.445
Dann musst du halt einfach Docker installieren und dann hältst du auch was.

01:00:33.585 --> 01:00:35.725
Ja, mit Docker geht es natürlich, aber auch da hast du

01:00:35.725 --> 01:00:37.305
WSL oder so Probleme.

01:00:37.985 --> 01:00:39.665
Genau, ja, und das macht halt alles

01:00:39.665 --> 01:00:41.565
ein bisschen langsam und hässlich, aber es geht auch mittlerweile

01:00:41.565 --> 01:00:43.545
relativ vieles oder eigentlich alles nativ

01:00:43.545 --> 01:00:45.625
direkt mit Ausnahmen. Es gibt so ein paar

01:00:45.625 --> 01:00:46.925
Pakete, die laufen, Antible zum Beispiel,

01:00:47.725 --> 01:00:49.565
zieht halt rum, muss halt doch in Docker laufen oder

01:00:49.565 --> 01:00:50.785
auf WSL oder sowas.

01:00:52.145 --> 01:00:53.745
Ich habe gerade noch gedacht, mit der

01:00:53.745 --> 01:00:55.545
Frage von gerade, mit den

01:00:55.545 --> 01:00:57.705
verschiedenen Tools, was finde ich

01:00:57.705 --> 01:00:59.525
auch eine große Rolle spielt, ist, in welchem

01:00:59.525 --> 01:01:01.525
Entwicklungsstadium, die sich befinden,

01:01:01.945 --> 01:01:03.725
beziehungsweise wie aktiv die weiterentwickelt

01:01:03.725 --> 01:01:05.705
werden, weil Rai zum Beispiel ist ja

01:01:05.705 --> 01:01:07.565
ein sehr junges Tool, das ist erst glaube ich

01:01:07.565 --> 01:01:09.665
im Mai rausgekommen und ist

01:01:09.665 --> 01:01:11.645
auch eigentlich entstanden

01:01:11.645 --> 01:01:13.885
mehr so als Spielerei,

01:01:14.025 --> 01:01:15.645
würde ich mal sagen. Er hat jetzt nicht gedacht, der Auto,

01:01:15.765 --> 01:01:17.665
dass das jetzt ein Tool wird, was von total vielen

01:01:17.665 --> 01:01:18.525
Leuten genutzt wird.

01:01:18.825 --> 01:01:20.665
Ich glaube, Armin macht das bei 80er Zeit.

01:01:20.865 --> 01:01:23.485
Also Armin Gronacher ist wahrscheinlich der Typ, der hat Flask

01:01:23.485 --> 01:01:23.805
gemacht.

01:01:25.225 --> 01:01:26.845
Ganz viele Projekte.

01:01:27.705 --> 01:01:29.125
Jochen weiß ja mehr, aber ja,

01:01:29.125 --> 01:01:32.145
Er macht jetzt gar keinen Python mehr, hauptsächlich, wenn ich das richtig verstehe.

01:01:33.085 --> 01:01:36.765
Aber er benutzt halt Python noch manchmal und dafür hat er dann in Rust so eine Lösung geschrieben,

01:01:37.145 --> 01:01:40.985
die tatsächlich so ein bisschen nach dem aussieht, was sich eigentlich die meisten Leute so wünschen.

01:01:41.965 --> 01:01:44.125
Aber ja, ich habe es auch so ein bisschen ausprobiert und dachte mir so,

01:01:44.245 --> 01:01:46.645
nicht ganz das, was ich brauche.

01:01:47.805 --> 01:01:49.645
Was hat dir denn gefehlt?

01:01:50.245 --> 01:01:51.945
Der Stil, wie.

01:01:52.485 --> 01:01:55.565
Vor allem das Project Scaffolding und wo die Sachen dann liegen.

01:01:56.705 --> 01:01:58.465
Das ist halt alles opinionated.

01:01:58.465 --> 01:02:03.365
Ich meine, ist halt, der hat sein Kram, ist ja voll super für ihn, aber nicht das, was ich machen würde.

01:02:03.445 --> 01:02:05.165
Ich hätte das gerne konfigurierbarer oder so.

01:02:06.025 --> 01:02:07.885
Und würde halt das gerne auf meinen Stil umbringen.

01:02:07.885 --> 01:02:11.345
Ja, ich glaube, das muss man halt auch so ein bisschen im Kopf behalten, wenn man jetzt sagt,

01:02:11.425 --> 01:02:13.825
okay, wir benutzen Rai und wir benutzen das vielleicht auch im Projekt.

01:02:14.565 --> 01:02:18.285
Sich einmal vor Augen zu führen, okay, das wird jetzt gerade eben von Armin entwickelt

01:02:18.285 --> 01:02:21.625
und gerade ist es auch sehr aktiv, also der bringt da viele neue Releases raus,

01:02:21.965 --> 01:02:23.325
aber man weiß ja nicht so wirklich, was damit passiert.

01:02:23.325 --> 01:02:26.745
Genau, im halben Jahr hat er was anderes vor, hat einen anderen Job und hat ein neues Hobby oder sowas.

01:02:26.745 --> 01:02:28.745
und das ist ein Test, das wir in der Zeit der PyTest-Sendung

01:02:28.745 --> 01:02:30.745
in der Zeit der PyTest-Sendung

01:02:30.745 --> 01:02:32.745
in der Zeit der PyTest-Sendung

01:02:32.745 --> 01:02:34.745
in der Zeit der PyTest-Sendung

01:02:34.745 --> 01:02:36.745
in der Zeit der PyTest-Sendung

01:02:36.745 --> 01:02:38.745
in der Zeit der PyTest-Sendung

01:02:38.745 --> 01:02:40.745
in der Zeit der PyTest-Sendung

01:02:40.745 --> 01:02:42.745
in der Zeit der PyTest-Sendung

01:02:42.745 --> 01:02:44.745
in der Zeit der PyTest-Sendung

01:02:44.745 --> 01:02:46.745
in der Zeit der PyTest-Sendung

01:02:46.745 --> 01:02:48.745
in der Zeit der PyTest-Sendung

01:02:48.745 --> 01:02:50.745
in der Zeit der PyTest-Sendung

01:02:50.745 --> 01:02:52.745
in der Zeit der PyTest-Sendung

01:02:52.745 --> 01:02:54.745
in der Zeit der PyTest-Sendung

01:02:54.745 --> 01:03:24.725
und das ist ein Testframework für Python.

01:03:24.745 --> 01:03:25.665
und auch andere Tools

01:03:25.665 --> 01:03:28.545
under the hood. Also, Rye zum Beispiel benutzt

01:03:28.545 --> 01:03:30.545
Pip-Tools und natürlich benutzen viele

01:03:30.545 --> 01:03:32.265
der anderen dann auch Pip.

01:03:32.465 --> 01:03:34.445
Also, wenn man jetzt irgendwie Poetry-Add, irgendein

01:03:34.445 --> 01:03:36.545
Package macht, dann nutzt

01:03:36.545 --> 01:03:38.705
es, glaube ich, Pip oder PipX.

01:03:38.825 --> 01:03:39.585
Ich bin mir gar nicht sicher.

01:03:40.245 --> 01:03:42.285
Aber viele von diesen grundlegenden Tools

01:03:42.285 --> 01:03:44.385
werden eben auch wiederverwendet und haben dann aber trotzdem

01:03:44.385 --> 01:03:46.665
diese übergeordneten

01:03:46.665 --> 01:03:48.065
Befehle wie Poetry-Add.

01:03:50.045 --> 01:03:51.825
Ja, also PipX ist auch nochmal interessant.

01:03:52.105 --> 01:03:53.765
Also, es gibt ja verschiedene Wege zum Beispiel

01:03:53.765 --> 01:03:55.725
dann sowas wie Poetry auch zu installieren.

01:03:55.845 --> 01:03:57.625
Man kann es halt einmal selber irgendwie

01:03:57.625 --> 01:03:59.705
von GitHub ziehen und bauen, man kann es halt

01:03:59.705 --> 01:04:01.545
irgendwie über Pip selbst installieren,

01:04:01.845 --> 01:04:03.645
man kann es über PipX installieren

01:04:03.645 --> 01:04:05.525
oder über, ich glaube, der empfohlene Weg ist,

01:04:05.645 --> 01:04:07.285
das Installationsskript zu verwenden.

01:04:08.165 --> 01:04:09.525
Ist es immer noch irgendwie,

01:04:09.645 --> 01:04:11.645
man nimmt die URL und pipet die nach

01:04:11.645 --> 01:04:13.725
Curl, also zieht die per Curl und pipet

01:04:13.725 --> 01:04:15.725
die in die Shell oder so? So ähnlich, ja.

01:04:15.785 --> 01:04:17.785
Aber es gibt mittlerweile neue Skripte und die anderen beiden

01:04:17.785 --> 01:04:19.605
alten Skripte sind auch wieder deprecated und die soll man

01:04:19.605 --> 01:04:21.545
nicht mehr verwenden und dann gibt es dann irgendeine Warning und es funktioniert

01:04:21.545 --> 01:04:23.625
nicht mehr und es geht kaputt. Also gibt es übrigens auch

01:04:53.625 --> 01:04:55.765
was zurückliefern. Das heißt, wenn jemand in deinem Netzwerk

01:04:55.765 --> 01:04:57.685
sitzt, dann kann er dir da Dinge unterschieben,

01:04:57.765 --> 01:04:58.325
wenn du das so machst.

01:05:00.785 --> 01:05:01.945
Aber ja, ich verstehe,

01:05:02.165 --> 01:05:03.585
warum Leute auf die Idee kommen, das so zu machen,

01:05:03.685 --> 01:05:06.305
weil die Alternativen

01:05:06.305 --> 01:05:07.265
sind auch alle nicht so toll.

01:05:08.445 --> 01:05:09.845
Rust-Up ist auch per Call, übrigens.

01:05:10.025 --> 01:05:10.725
Das an der Stelle mal.

01:05:14.725 --> 01:05:15.625
Ja, also ich frage,

01:05:15.985 --> 01:05:17.765
auch noch interessant, habt ihr

01:05:17.765 --> 01:05:19.625
irgendwelche Pakete, die ihr in das System Python

01:05:19.625 --> 01:05:20.605
mit direkt installiert?

01:05:20.605 --> 01:05:24.065
ganz schlaff, der sagt ja alles nein pur, da kommt nichts dran, das ist

01:05:24.065 --> 01:05:26.545
rein standard lib.

01:05:27.445 --> 01:05:28.125
Also ich installiere tatsächlich immer...

01:05:28.125 --> 01:05:29.565
Ich versuche tatsächlich zu vermeiden.

01:05:30.405 --> 01:05:31.325
Also bei mir ist immer Django drin.

01:05:31.865 --> 01:05:34.505
Also ich hätte gerne immer Startproject zum Beispiel.

01:05:34.505 --> 01:05:36.785
Achso, damit du quasi im Template

01:05:36.785 --> 01:05:38.365
direkt immer was erzeugen kannst.

01:05:38.605 --> 01:05:40.505
Okay, ja gut. Und Rich ist immer drin,

01:05:40.645 --> 01:05:42.365
weil ich habe immer so ein paar Sachen in meiner

01:05:42.365 --> 01:05:44.605
Shell, die auf Python basiert sind

01:05:44.605 --> 01:05:46.465
und da hätte ich gerne immer Rich drin und Typer hätte ich

01:05:46.465 --> 01:05:47.925
halt in dem Fall auch gerne drin, weil ich halt

01:05:47.925 --> 01:05:50.365
viele Kommando-Talentools, die ich im System weit benutze,

01:05:50.605 --> 01:05:52.365
baue, deswegen auch da.

01:05:53.125 --> 01:05:54.405
Ja, aber das sind dann schon wieder so

01:05:54.405 --> 01:05:56.045
Dependencies, die ich dazu packen muss.

01:05:57.125 --> 01:05:58.645
Ich habe tatsächlich noch nie Django benutzt.

01:05:58.745 --> 01:06:00.585
Warum hast du das? Also du hast das gerade kurz erwähnt,

01:06:00.725 --> 01:06:02.705
aber nicht so, dass ich das verstehen konnte.

01:06:03.365 --> 01:06:04.645
Also das ist eigentlich nur ein einziger Grund.

01:06:05.145 --> 01:06:05.505
Normalerweise,

01:06:05.825 --> 01:06:08.625
wenn ich ein neues Projekt mache, benutze ich

01:06:08.625 --> 01:06:09.465
Django Start Project,

01:06:10.185 --> 01:06:12.465
was quasi den Scaffold macht und ich benutze dafür

01:06:12.465 --> 01:06:14.185
mein eigenes Template. Du kannst halt dann bei Start Project

01:06:14.185 --> 01:06:15.505
einen Pfad zu deinem Template angeben.

01:06:16.425 --> 01:06:17.765
Und damit aber Start Project

01:06:17.765 --> 01:06:20.545
verfügbar ist, muss halt Django schon da sein.

01:06:20.605 --> 01:06:24.005
und deswegen zähle ich Django einfach direkt mit.

01:06:24.025 --> 01:06:24.905
Ja, das ergibt Sinn.

01:06:25.205 --> 01:06:25.925
Und dann kann ich halt...

01:06:25.925 --> 01:06:28.825
Dieses mit dem Project Scaffolding, da habe ich auch gerade dran gedacht,

01:06:28.925 --> 01:06:31.625
dass die meisten Packaging-Tools, die haben da auch eben Befehle für.

01:06:32.165 --> 01:06:33.305
Das ist vielleicht ganz gut zu wissen.

01:06:33.305 --> 01:06:37.685
Also normalerweise hat man irgendwie Tests-Directory und Source-Directory

01:06:37.685 --> 01:06:41.865
und die meisten Tools, beispielsweise jetzt Hedge-Poetry,

01:06:41.945 --> 01:06:43.545
die haben alle einen Befehl.

01:06:43.785 --> 01:06:46.525
Könnt ihr irgendwie Hedge-Init, nee, Hedge-New

01:06:46.525 --> 01:06:48.445
und dann mit so einer Init-Flag beispielsweise,

01:06:48.445 --> 01:06:51.145
die erstellen dann das PyProject-Hummel-File

01:06:51.145 --> 01:06:52.785
schon mal für einen, da sind dann auch viele

01:06:52.785 --> 01:06:54.225
der Tools schon konfiguriert,

01:06:54.825 --> 01:06:56.725
wie Black beispielsweise und dann

01:06:56.725 --> 01:06:58.485
auch diese Folder-Struktur, also das

01:06:58.485 --> 01:07:00.425
kann auch ganz nett sein, wenn man

01:07:00.425 --> 01:07:02.645
das nicht alles selbst machen will. Ja, oder wenn man

01:07:02.645 --> 01:07:04.725
das mag, ja. Also das ist

01:07:04.725 --> 01:07:06.605
zum Beispiel so ein Punkt, wo ich sagen würde, ich hätte

01:07:06.605 --> 01:07:08.585
da gerne, dass er dann ein Template nimmt, was

01:07:08.585 --> 01:07:10.585
ich ihm vorgebe, weil ich nicht mag, wie er es macht.

01:07:10.985 --> 01:07:12.205
Und das ist auch der Grund, also es gibt noch

01:07:12.205 --> 01:07:14.545
ein paar andere Möglichkeiten, so ein Project-Scaffolding zu machen,

01:07:14.625 --> 01:07:15.765
sowas wie Cookie-Cutter oder so.

01:07:45.765 --> 01:07:47.025
anfängt. Was empfiehlt man dem?

01:07:48.145 --> 01:07:49.465
Ich würde fast sagen, gar keinen

01:07:49.465 --> 01:07:50.825
Scaffold und alles selber bauen.

01:07:51.025 --> 01:07:53.525
Ja, aber dann hat er halt eine schwere Leerkurve

01:07:53.525 --> 01:07:54.245
erstmal vor sich.

01:07:55.205 --> 01:07:57.625
Du musst alles aufräumen. Ich kenne halt so Kundenprojekte, wo die Leute

01:07:57.625 --> 01:07:59.605
an irgendwas angefangen haben und denkst dir so, oh mein Gott.

01:08:00.425 --> 01:08:01.265
Ja, ist das...

01:08:01.265 --> 01:08:03.305
Ja, Cookiecut ist vielleicht gar nicht so doof. Es gibt ja auch für

01:08:03.305 --> 01:08:05.665
Data Science Templates oder sowas und vielleicht kann man

01:08:05.665 --> 01:08:07.045
da auch sein eigenes Template bauen. Ich weiß es nicht.

01:08:08.145 --> 01:08:09.165
Ich hab's für Django halt.

01:08:09.645 --> 01:08:10.305
Django Template.

01:08:11.665 --> 01:08:13.425
Interessanterweise, man kann

01:08:13.425 --> 01:08:15.165
mit diesem Django Start Project

01:08:15.165 --> 01:08:17.245
Templates, das auch missbrauchen für

01:08:17.245 --> 01:08:19.345
Nicht-Django-Projekte. Das heißt,

01:08:19.425 --> 01:08:21.405
du kannst halt da tatsächlich auch andere Projekte, die gar nicht

01:08:21.405 --> 01:08:23.365
Django brauchen, haben. Deswegen habe ich Django

01:08:23.365 --> 01:08:25.085
tatsächlich am Anfang installiert, weil ich kann einfach

01:08:25.085 --> 01:08:26.925
arbitriere Projekte mit meinem Django-Template bauen,

01:08:28.025 --> 01:08:29.145
was im Prinzip

01:08:29.145 --> 01:08:31.045
sowas ähnliches macht, wo einfach Ginger ersetzen

01:08:31.045 --> 01:08:32.645
für irgendwelche Python-Files und halt

01:08:32.645 --> 01:08:33.945
Dietrich-Strukturen bauen.

01:08:35.445 --> 01:08:37.265
Mir ist fast so wie Cookie-Katar, nicht ganz so

01:08:37.265 --> 01:08:39.225
mächtig und ich brauche es halt auch nur so für

01:08:39.225 --> 01:08:41.345
kleine Sachen. Ich mache jetzt auch nicht so mega große Dinge, aber

01:08:41.345 --> 01:08:43.285
ja. Und ein Problem, was man dabei

01:08:43.285 --> 01:08:45.285
hat, ist halt, was ist, wenn sich an dem Basis-Template

01:08:45.285 --> 01:08:47.005
irgendwas ändert und man möchte jetzt alle

01:08:47.005 --> 01:08:49.105
Projekte, die man mit dem Template erzeugt hat,

01:08:49.145 --> 01:08:50.865
auf den aktuellen Stand bringen. Wie macht man denn das?

01:08:52.145 --> 01:08:53.325
Das ist eine gute Frage. Ich bin

01:08:53.325 --> 01:08:54.525
da gerade dabei, mir was zu überlegen.

01:08:55.085 --> 01:08:56.565
Und zwar ist es sowas wie,

01:08:56.965 --> 01:08:58.245
du musst dir halt den

01:08:58.245 --> 01:09:00.965
Commit merken, von dem du das

01:09:00.965 --> 01:09:02.625
Template gescaffoldet hast.

01:09:03.965 --> 01:09:04.905
Dann musst du

01:09:04.905 --> 01:09:07.125
einen neuen Branch erstellen,

01:09:07.465 --> 01:09:08.005
musst dann

01:09:08.005 --> 01:09:11.325
den neuen Commit-Hash

01:09:11.325 --> 01:09:13.225
auschecken, machst da zum Diff,

01:09:13.285 --> 01:09:43.265
und PyTest.

01:09:43.285 --> 01:09:45.365
Das heißt, ich muss die immer im Template bauen und dann

01:09:45.365 --> 01:09:47.165
picken, anstatt dass ich Sachen selber

01:09:47.165 --> 01:09:48.025
im Core ändere.

01:09:49.225 --> 01:09:50.905
Ich konnte ja nur Sachen dazufügen und sonst

01:09:50.905 --> 01:09:53.205
wird es halt immer Mesh-Konflikte geben, wo du halt immer dann manuell

01:09:53.205 --> 01:09:55.205
rumfugen musst. Deswegen würde ich einfach

01:09:55.205 --> 01:09:57.125
sagen, meine Konvention ist das dann einfach nicht zu machen, weil das

01:09:57.125 --> 01:09:59.185
brauche ich auch nicht, weil ich habe halt dann E-Apps in der

01:09:59.185 --> 01:10:01.005
Applikation, die für die Applikation da sind

01:10:01.005 --> 01:10:03.505
und dann machen die halt nur Sachen, die die Applikation macht und Core-Funktionalität

01:10:03.505 --> 01:10:04.605
kommt halt immer dann aus dem

01:10:04.605 --> 01:10:06.825
aus der Basis raus. Aber, ja.

01:10:08.765 --> 01:10:09.205
Oder auch

01:10:09.205 --> 01:10:10.945
noch eine Frage, genau, gibt es irgendwie, dass bei

01:10:10.945 --> 01:10:13.765
bei diesem ganzen Tool gibt es da auch so Funktionalitäten für

01:10:13.765 --> 01:10:25.518
ich habe jetzt irgendwie 30 Repositories die alle relativ sind ich w jetzt gern zum Beispiel wei ich nicht Poetry Update oder was auch immer mal auf allen ausf Gibt es da Support

01:10:27.177 --> 01:10:28.357
Ich hatte den Fall noch nie.

01:10:28.418 --> 01:10:29.657
Das kann gut sein.

01:10:30.098 --> 01:10:31.797
Also habe ich noch nie ausprobiert,

01:10:32.018 --> 01:10:32.697
auch probieren müssen.

01:10:35.177 --> 01:10:36.137
Ja, ich kenne das auch immer so,

01:10:36.197 --> 01:10:38.257
dass dann Leute sich ihre eigenen Dinge zum Verwalten

01:10:38.257 --> 01:10:39.617
von vielen Projekten schreiben.

01:10:41.637 --> 01:10:42.317
Also ich glaube,

01:10:42.317 --> 01:10:43.898
das ist sehr gefährlich, weil die Projekte

01:10:43.898 --> 01:10:45.877
alle so unterschiedlich sind, da alle gleichzeitig

01:10:45.877 --> 01:10:46.857
anfassen. Ja, also

01:10:46.857 --> 01:10:50.137
zum Beispiel in der letzten

01:10:50.137 --> 01:10:51.737
Jungle Chat Episode wurde Adam Johnson

01:10:51.737 --> 01:10:53.677
gefragt, wie er das hinkriegt, dass er

01:10:53.677 --> 01:10:56.117
70 populäre Repositories

01:10:56.117 --> 01:10:56.757
manhint, oder

01:10:56.757 --> 01:10:59.197
es gibt ja Leute, die da ganz viel haben.

01:10:59.737 --> 01:11:01.438
Der erste Schritt ist, dass man alle Projekte

01:11:01.438 --> 01:11:03.317
auf den gleichen Status bringen muss.

01:11:03.578 --> 01:11:05.197
Und dann kann man mit Skripten drüber gehen.

01:11:05.197 --> 01:11:05.558
Ja, genau.

01:11:07.058 --> 01:11:09.237
Ja, ich habe auch so für die Produktivsachen

01:11:09.237 --> 01:11:10.998
so ein Ansible-Book, das halt dann hingeht und

01:11:10.998 --> 01:11:13.117
einfach Python updatet. Also zumindest Python-Mineware

01:11:13.117 --> 01:11:15.098
oder so, oder Backpix geht ja noch, aber wenn du halt

01:11:15.098 --> 01:11:17.058
Major, dann musst du halt eigentlich immer das Projekt

01:11:17.058 --> 01:11:19.038
auschecken, gucken, ob es geht. Noch so eine

01:11:19.038 --> 01:11:21.177
Frage halt, wie macht der das dann mit Tests

01:11:21.177 --> 01:11:23.377
für Produktion, für so Builds

01:11:23.377 --> 01:11:24.978
in verschiedenen Versionen, nimmt der da alle Tox

01:11:24.978 --> 01:11:27.098
oder wie macht der das

01:11:27.098 --> 01:11:27.317
am besten?

01:11:28.877 --> 01:11:31.117
Ja, genau, also ich habe bisher immer Tox verwendet.

01:11:32.018 --> 01:11:33.117
Auch weil es eben meistens

01:11:33.117 --> 01:11:34.998
schon, wenn man jetzt irgendwie Hedge oder

01:11:34.998 --> 01:11:36.877
ähnliches hat, dann mit konfiguriert ist.

01:11:37.398 --> 01:11:38.938
Einfach der Einfachheit halber. Ah, okay, also

01:11:38.938 --> 01:11:40.598
Hedge, Konfigurier, Tox auch direkt mit?

01:11:41.458 --> 01:11:42.458
Soweit ich weiß, ja.

01:11:43.117 --> 01:11:45.137
und dann sagt ihr einfach, okay, ich unterstütze

01:11:45.137 --> 01:11:47.237
bis zu dieser und dieser Version runter und

01:11:47.237 --> 01:11:49.558
dann installiert

01:11:49.558 --> 01:11:51.157
also was macht Tox nochmal?

01:11:51.297 --> 01:11:52.938
Tox macht verschiedene

01:11:52.938 --> 01:11:55.078
Pythons. Ja, das erzeugt dir zum Beispiel

01:11:55.078 --> 01:11:56.657
alle, also die unterschiedlichen

01:11:56.657 --> 01:11:58.418
Virtual Envs in unterschiedlichen Versionen

01:11:58.418 --> 01:12:00.857
und lässt dann da deine Tests gegenlaufen und so

01:12:00.857 --> 01:12:02.938
und macht dann hinterher eine Zusammenfassung, was alles funktioniert

01:12:02.938 --> 01:12:05.018
oder nicht funktioniert hat. Woher nimmt denn Tox

01:12:05.018 --> 01:12:06.177
die Python-Version?

01:12:10.237 --> 01:12:11.797
Das ist eine gute Frage.

01:12:13.117 --> 01:12:18.598
Ich weiß gar nicht, ob es selber eine Möglichkeit hat,

01:12:18.657 --> 01:12:20.418
ob die auf der Maschine schon da sein müssen

01:12:20.418 --> 01:12:21.777
oder ob es selber...

01:12:21.777 --> 01:12:22.117
Docker?

01:12:22.817 --> 01:12:24.677
Nee, nicht Docker. Das glaube ich nicht.

01:12:25.197 --> 01:12:28.538
Ich glaube, es kann die selber installieren.

01:12:29.078 --> 01:12:30.157
Ich glaube, weil es nicht da sein muss.

01:12:30.337 --> 01:12:32.117
Weil ich glaube...

01:12:32.117 --> 01:12:34.538
Ich habe wahrscheinlich alte Versionen

01:12:34.538 --> 01:12:36.418
nicht mehr, aber die Tox-Singer testen auch

01:12:36.418 --> 01:12:37.817
gegen alte Python-Versionen.

01:12:38.377 --> 01:12:39.857
Und das hat eigentlich immer funktioniert.

01:12:40.018 --> 01:12:41.337
Also mein

01:12:41.337 --> 01:12:44.317
Mein Guess wäre an der Stelle, ja,

01:12:44.438 --> 01:12:45.777
Tox macht das irgendwie selber, aber

01:12:45.777 --> 01:12:47.117
ich weiß es auch nicht genau.

01:12:48.697 --> 01:12:51.538
Es gibt auch Nox,

01:12:51.558 --> 01:12:53.978
auch noch ganz interessant,

01:12:54.478 --> 01:12:56.317
weil ich habe auch schon viel zu viel Zeit damit verwendet,

01:12:56.578 --> 01:12:58.197
irgendwie Tox

01:12:58.197 --> 01:12:59.998
so zu konfigurieren, wie ich das gerne hätte

01:12:59.998 --> 01:13:02.297
und es dauert

01:13:02.297 --> 01:13:03.918
immer länger, als man denkt, dann funktioniert es doch nicht.

01:13:04.898 --> 01:13:06.938
Und bei Nox kann man

01:13:06.938 --> 01:13:07.958
einfach Python-Code hinschreiben

01:13:07.958 --> 01:13:09.538
und das finden viele auch angenehmer.

01:13:09.538 --> 01:13:18.538
Ich habe es aber auch noch nicht, weil jetzt habe ich schon so viel, jetzt unterliege ich der Sun-Cost-Fallacy und jetzt habe ich schon so viel Zeit in Toxinis investiert, jetzt gehe ich davon nicht mehr weg.

01:13:19.458 --> 01:13:25.018
Ja, ich habe gerade mal nebenbei nachgeguckt und es sieht so aus, als müsste man das vorher installiert haben.

01:13:25.098 --> 01:13:25.777
Ach doch, okay.

01:13:28.578 --> 01:13:34.578
Okay, also tatsächlich PyEnv und dann alle Versionen, die du halt testen willst, einmal draufhauen und dann Tox sagen, wo die sind.

01:13:34.578 --> 01:13:35.078
Ja.

01:13:35.078 --> 01:14:05.058
Ja, ja, ja

01:14:05.078 --> 01:14:07.117
lösen? Naja, nee, zum Beispiel, wenn du

01:14:07.117 --> 01:14:09.098
jetzt eine Kombination hast aus Data Science

01:14:09.098 --> 01:14:11.117
und zum Beispiel Web, dann gibt's halt

01:14:11.117 --> 01:14:13.297
diverse Geschichten, so, weiß ich nicht,

01:14:13.518 --> 01:14:14.717
irgendwie PyTorch oder

01:14:14.717 --> 01:14:16.958
Dinge in diesem Ökosystem,

01:14:17.398 --> 01:14:19.197
die halt nicht auf Python 3.11 laufen.

01:14:19.737 --> 01:14:20.918
Das kannst du, geht halt noch nicht.

01:14:21.117 --> 01:14:22.737
Ja, aber genau, aber das ist halt so ein Ding,

01:14:23.117 --> 01:14:25.177
harte obere Abhängigkeitsschranke, warum

01:14:25.177 --> 01:14:26.317
laufen die nicht auf Python 3.11?

01:14:26.777 --> 01:14:28.958
Ja, aber das ist ja genau der Punkt, weil die

01:14:28.958 --> 01:14:30.458
meistens haben ihre Top

01:14:30.458 --> 01:14:32.637
dann gesetzt, oder

01:14:32.637 --> 01:14:34.998
viele Pakete in diesem Data Science Umfeld, die gehen auch

01:14:34.998 --> 01:14:37.157
nicht für Python größer

01:14:37.157 --> 01:14:39.177
4, also größer 3, also nicht für 4.

01:14:41.277 --> 01:14:43.197
Warum auch immer man das sagen möchte.

01:14:43.377 --> 01:14:45.297
Ich würde sagen, warum nicht? Wenn Python 4

01:14:45.297 --> 01:14:47.558
vielleicht läuft, hast du ja noch mal ausprobiert.

01:14:49.518 --> 01:14:49.777
Naja.

01:14:51.018 --> 01:14:51.797
Ja, das ist nicht so einfach.

01:14:52.958 --> 01:14:54.797
Ja, ich weiß nicht, haben wir denn irgendwie

01:14:54.797 --> 01:14:57.257
noch irgendwie ein größeres Thema bei diesem

01:14:57.257 --> 01:14:57.697
Paket

01:14:57.697 --> 01:15:00.797
Paketierungstools

01:15:00.797 --> 01:15:02.998
Projektmanagement? Ich glaube vielleicht die

01:15:02.998 --> 01:15:05.058
Quintessenz, dass es irgendwie nicht

01:15:05.058 --> 01:15:06.177
das beste Tool gibt.

01:15:06.717 --> 01:15:08.458
Das wünschen sich irgendwie alle, aber

01:15:08.458 --> 01:15:10.657
bisher ist es leider noch nicht aufgetaucht.

01:15:11.217 --> 01:15:13.018
Genau. Und es ist eben

01:15:13.018 --> 01:15:14.998
auch schwierig, das hast du ja auch gerade beschrieben, dass man

01:15:14.998 --> 01:15:16.918
nicht von Python aus dieses Tool

01:15:16.918 --> 01:15:19.058
herstellen kann. Und es gibt immer mal wieder

01:15:19.058 --> 01:15:20.558
Ansätze, das zu lösen, aber

01:15:20.558 --> 01:15:23.038
so wirklich das beste Tool, was glaube ich

01:15:23.038 --> 01:15:25.157
alle adoptieren

01:15:25.157 --> 01:15:26.478
werden, kann man es im Deutschen sagen,

01:15:26.998 --> 01:15:28.978
was alle benutzen werden, ist

01:15:28.978 --> 01:15:30.337
irgendwie noch nicht so wirklich gefunden.

01:15:30.797 --> 01:15:32.518
Du hast es ja auch gerade gesagt, zum Beispiel Rye

01:15:32.518 --> 01:15:34.217
kann ja theoretisch alles,

01:15:34.817 --> 01:15:36.617
aber wenn es dann nicht wirklich dem entspricht,

01:15:36.717 --> 01:15:38.617
auch diesem Workflow oder wie es aufgebaut ist,

01:15:38.657 --> 01:15:40.717
wie man das gerne hätte und man benutzt es dann

01:15:40.717 --> 01:15:42.498
nicht, dann fällt man eben doch wieder auf

01:15:42.498 --> 01:15:44.598
einzelne andere Tools zurück und dadurch entsteht das auch,

01:15:44.677 --> 01:15:46.797
dass so viele Leute so viele verschiedene Tools benutzen.

01:15:49.797 --> 01:15:50.197
Ja.

01:15:51.877 --> 01:15:52.958
Ja, das ist schwierig.

01:15:53.958 --> 01:15:54.918
UAC zum Beispiel

01:15:54.918 --> 01:15:55.637
oder sowas, wie heißt das?

01:15:55.637 --> 01:15:56.418
Das habe ich noch nie gehört.

01:15:56.697 --> 01:15:59.637
Das ist auch so eine Rust-Implementierung von Python-Paketen

01:16:00.297 --> 01:16:01.797
für VENVs und sowas.

01:16:01.797 --> 01:16:02.677
Format

01:16:02.677 --> 01:16:04.817
ActivateAd und sowas.

01:16:05.317 --> 01:16:07.677
Ja, aber dieses Bootstrapping-Problem ist halt schon auch

01:16:07.677 --> 01:16:09.438
eines der grundlegenden,

01:16:09.598 --> 01:16:11.277
dass man halt nicht einfach irgendwie

01:16:11.277 --> 01:16:13.777
ja, dass man immer schon

01:16:13.777 --> 01:16:15.617
irgendwie Python und

01:16:15.617 --> 01:16:17.697
Virtual Env und so das irgendwie

01:16:17.697 --> 01:16:19.277
können muss, um halt irgendwas,

01:16:19.617 --> 01:16:21.438
um sich ein Tool zu installieren, das

01:16:21.438 --> 01:16:23.677
deine Probleme löst. Und ja,

01:16:23.938 --> 01:16:25.717
da bleibt wahrscheinlich nur der Ausweg irgendwie über

01:16:25.717 --> 01:16:27.617
irgendwas zu gehen, was halt,

01:16:27.877 --> 01:16:29.337
wo man halt ein Binary deployen kann, also

01:16:29.337 --> 01:16:31.098
was oder go oder so, aber

01:16:31.098 --> 01:16:33.998
Also ich würde gerne noch

01:16:33.998 --> 01:16:35.817
vielleicht ein, zwei Sachen zu diesem Packaging-Ding sagen, also mich

01:16:35.817 --> 01:16:37.938
interessiert das zum Beispiel noch, also wann würde man denn zum Beispiel

01:16:37.938 --> 01:16:39.958
ein Package auf PyPy

01:16:39.958 --> 01:16:41.737
publishen wollen?

01:16:44.458 --> 01:16:45.817
Also es gibt ja da recht viele Pakete

01:16:45.817 --> 01:16:48.058
Ja, also ich denke

01:16:48.058 --> 01:16:49.898
das kommt total drauf an, also ob man das

01:16:49.898 --> 01:16:52.098
irgendwie gerne einfach mal ausprobieren

01:16:52.098 --> 01:16:53.938
will, habe ich auch schon häufiger mal mitbekommen, dass Leute

01:16:53.938 --> 01:16:55.837
wirklich einfach mal

01:16:55.837 --> 01:16:58.177
sich ein bisschen einlesen möchten in diese ganze Thematik

01:16:58.177 --> 01:17:00.078
und wie funktioniert das überhaupt und dann so ein kleines

01:17:00.078 --> 01:17:04.137
als Beispielprojekt schreiben, weil man muss ja nicht viel machen. Man kann an sich einfach

01:17:04.137 --> 01:17:08.598
einen Account erstellen und dann kann man sein Paket hochladen und zugänglich machen.

01:17:08.717 --> 01:17:11.617
Darum muss man, glaube ich, auch sehr aufpassen, was man sich so installiert von PyPI.

01:17:13.398 --> 01:17:19.478
Genau, oder dass man, was auch häufiger vorkommt, das ist jetzt dann, dass man so einen internen

01:17:19.478 --> 01:17:24.337
Packaging-Index benutzen würde, wenn man beispielsweise in einem großen Unternehmen arbeitet

01:17:24.337 --> 01:17:30.377
und Code zwischen verschiedenen Gruppen oder Abteilungen teilen möchte.

01:17:30.458 --> 01:17:32.117
So eine Core-Library quasi, so eine eigene.

01:17:33.078 --> 01:17:37.438
Ja, genau, dass man das dann hochlädt, sodass andere das wieder installieren können.

01:17:39.177 --> 01:17:39.438
Genau.

01:17:40.918 --> 01:17:43.317
Es gibt, denke ich, verschiedene Use Cases.

01:17:43.877 --> 01:17:46.637
Und es gibt natürlich auch total viele tolle Open Source Libraries,

01:17:47.137 --> 01:17:51.337
wie beispielsweise Flask, die man sich darüber installieren kann,

01:17:51.337 --> 01:17:53.078
einfach, weil jemand sich mal dachte, boah,

01:17:53.498 --> 01:17:55.377
das müsste man mal machen, das mache

01:17:55.377 --> 01:17:57.297
ich jetzt mal und das total populär

01:17:57.297 --> 01:17:59.277
geworden ist. Ich finde aber auch in dieser Hinsicht,

01:17:59.418 --> 01:18:01.098
wir hatten da ja gerade schon mit Poetra drüber geredet,

01:18:01.177 --> 01:18:02.898
dass da so viele offene Issues waren,

01:18:03.418 --> 01:18:05.217
teilweise, dass man häufig

01:18:05.217 --> 01:18:07.137
auch vergisst, dass da eine Person

01:18:07.137 --> 01:18:09.357
hinter sitzt, die das eventuell noch in ihrer freien Zeit

01:18:09.357 --> 01:18:10.617
macht und

01:18:10.617 --> 01:18:13.418
dass man das auch ganz häufig

01:18:13.418 --> 01:18:14.478
wertschätzender

01:18:14.478 --> 01:18:17.177
beurteilen muss, als man es tut, wenn Dinge nicht

01:18:17.177 --> 01:18:19.177
funktionieren. Das ist total krass, also wie soll ich

01:18:19.177 --> 01:18:20.958
das denn jemals schaffen? Also welche

01:18:20.958 --> 01:18:21.478
Freizeit.

01:18:21.677 --> 01:18:25.337
Ja, das ist ja auch

01:18:25.337 --> 01:18:27.337
ein sehr verbreitetes

01:18:27.337 --> 01:18:28.458
Problem, dass Leute dann halt

01:18:28.458 --> 01:18:30.418
irgendwie,

01:18:31.197 --> 01:18:33.217
also, dass dann Maintainer von

01:18:33.217 --> 01:18:35.277
so Projekten verschwinden, liegt ja häufig daran,

01:18:35.657 --> 01:18:37.498
dass sie das dann halt irgendwie hinkriegen,

01:18:37.857 --> 01:18:39.277
aber man kriegt das halt nur eine Zeit lang

01:18:39.277 --> 01:18:41.357
irgendwie hin und irgendwann ist man halt einfach durch

01:18:41.357 --> 01:18:42.938
und dann ist halt,

01:18:43.317 --> 01:18:45.058
dann geht man halt irgendwie

01:18:45.058 --> 01:18:47.237
was mit Holz machen oder so und das Projekt

01:18:47.237 --> 01:18:48.217
ist halt nicht mehr Maintainer.

01:18:49.157 --> 01:18:49.418
Ja.

01:18:50.958 --> 01:19:05.677
Ja, vor allem, wenn der Ton dann nicht wertschätzend ist, wenn solche Ansprüche stellen und sagen, jetzt sieh aber mal zu, dass du das machst oder das funktioniert hier nicht und warum nicht und gib mir bitte die Lösung. Ja, stelle ich mir auch schon ganz schön frustrierend vor, wenn man sowas hat.

01:19:05.677 --> 01:19:07.177
Ja.

01:19:20.958 --> 01:19:22.837
die sich gegenseitig nicht sehen können.

01:19:22.998 --> 01:19:24.998
Aber die Community ist auch, finde ich,

01:19:25.077 --> 01:19:27.018
sehr wertschätzend und freundlich. Also wenn ich jetzt auf

01:19:27.018 --> 01:19:28.958
Python-Konferenzen war, die Leute sind ja

01:19:28.958 --> 01:19:31.157
wirklich nett. Man muss dann irgendwie Sorge haben,

01:19:31.237 --> 01:19:33.257
Vortrag zu halten und Fehler zu machen, weil

01:19:33.257 --> 01:19:35.157
da sitzt niemand, der dich dann

01:19:35.157 --> 01:19:37.217
ausbuht oder irgendwie sagt, boah, was hast denn du jetzt

01:19:37.217 --> 01:19:38.277
für ein Mist fabriziert?

01:19:39.398 --> 01:19:41.117
Also ich finde, die Leute in der Python-Community

01:19:41.117 --> 01:19:42.157
sind schon sehr freundlich.

01:19:42.217 --> 01:19:45.098
Die Leute, das macht immer mehr Spaß

01:19:45.098 --> 01:19:47.058
als auch bei anderen Sachen, die ich so kennengelernt habe im Check-in-Feld.

01:19:47.498 --> 01:19:49.138
Ja, und man muss auch sagen, dass die Python-Community

01:19:49.138 --> 01:19:49.538
wiederhalten,

01:19:50.638 --> 01:19:52.998
so ein gutes Beispiel ist für,

01:19:53.217 --> 01:19:54.737
wie das gut funktionieren kann.

01:19:55.138 --> 01:19:57.438
Das ist in anderen Communities nicht unbedingt so.

01:19:57.558 --> 01:19:58.638
Also Python ist da doch besonders

01:19:58.638 --> 01:20:00.877
angenehm, ehrlich gesagt.

01:20:00.978 --> 01:20:03.237
Bewahrt einen natürlich nicht davor, von irgendwelchen Randoms

01:20:03.237 --> 01:20:05.098
auf Reddit angeschrien zu werden, aber...

01:20:05.098 --> 01:20:06.377
Nee, gut, das kann natürlich auch mal passieren,

01:20:06.797 --> 01:20:09.138
aber generell ist es, und vor allen Dingen

01:20:09.138 --> 01:20:10.978
ist es halt auch besser als bei anderen.

01:20:11.098 --> 01:20:13.098
Wir erinnern uns ja vielleicht selber an junge

01:20:13.098 --> 01:20:14.717
Jahre, wo man vielleicht selber mal nicht immer

01:20:14.717 --> 01:20:17.197
den Ton getroffen hat, den man eigentlich sich als Erwachsener

01:20:17.197 --> 01:20:17.737
hätte überlegt.

01:20:17.737 --> 01:20:21.398
mit PyT und so.

01:20:22.697 --> 01:20:24.038
Manchmal, ja.

01:20:25.317 --> 01:20:26.317
Ja, mir passiert das nie.

01:20:27.077 --> 01:20:28.498
Ich bin immer freundlich,

01:20:28.617 --> 01:20:29.978
immer höflich, immer gut drauf.

01:20:32.677 --> 01:20:32.898
Ja.

01:20:33.577 --> 01:20:35.357
Ja, ansonsten, ich weiß nicht mehr,

01:20:35.498 --> 01:20:37.117
ich habe sonst auch nicht...

01:20:37.117 --> 01:20:38.257
Habt ihr noch ein Packaging-Thema?

01:20:39.518 --> 01:20:42.098
Oder ein Management-von-Environment-Thema?

01:20:42.797 --> 01:20:44.558
Nee, aber ich fand

01:20:44.558 --> 01:20:46.518
dieses Automatic-Speech-Recognition-Thema

01:20:46.518 --> 01:20:47.257
auch noch total interessant.

01:20:47.257 --> 01:20:49.357
Ich weiß nicht, ob du Lust hast,

01:20:49.438 --> 01:20:49.817
darüber zu reden?

01:20:50.978 --> 01:20:53.418
Ich würde da super gerne drüber reden, aber ich darf leider nicht.

01:20:53.558 --> 01:20:54.418
Ach so, okay.

01:20:55.177 --> 01:20:57.077
Das ist so ziemlich alles, was ich erzählen darf,

01:20:57.257 --> 01:20:58.277
was ich schon gesagt habe.

01:20:59.357 --> 01:20:59.558
Ja.

01:21:01.038 --> 01:21:02.998
Leider, aber es ist ein super interessantes Thema,

01:21:03.077 --> 01:21:03.577
das stimmt schon.

01:21:05.418 --> 01:21:06.857
Okay. Ich überlege gerade,

01:21:07.077 --> 01:21:08.617
für Environment Management oder Painting,

01:21:09.297 --> 01:21:11.217
da haben wir so die meisten Tools so besprochen,

01:21:11.317 --> 01:21:12.038
es gibt noch so ein paar mehr,

01:21:13.098 --> 01:21:14.018
die wir jetzt nicht so gesprochen haben.

01:21:14.018 --> 01:21:15.797
Ja, aber ich weiß auch nicht, ob die wichtig sind oder relevant.

01:21:15.797 --> 01:21:17.918
Wir können ja auch einfach den

01:21:17.918 --> 01:21:20.337
Vortrag verlinken

01:21:20.337 --> 01:21:22.038
oder auch den Blogpost, da ist dann auch nochmal

01:21:22.038 --> 01:21:24.077
das Ganze ein bisschen grafischer dargestellt, das finde ich

01:21:24.077 --> 01:21:26.297
hilft natürlich auch für die

01:21:26.297 --> 01:21:28.098
Übersicht. Es gibt eben auch ein paar

01:21:28.098 --> 01:21:30.197
Tools, PyFlow zum Beispiel, haben wir gar nicht

01:21:30.197 --> 01:21:32.197
angesprochen, das habe ich auch mit aufgenommen, aber das

01:21:32.197 --> 01:21:34.177
ist so ein klassisches Projekt, was mal

01:21:34.177 --> 01:21:36.177
angefangen wurde und was nicht

01:21:36.177 --> 01:21:38.438
mehr maintained wird und dementsprechend auch nicht unbedingt

01:21:38.438 --> 01:21:40.197
empfehlenswert ist,

01:21:40.257 --> 01:21:41.558
das zu benutzen.

01:21:42.077 --> 01:21:44.337
Ich habe es mal ausprobiert und habe sofort ganz viele Fehler

01:21:44.337 --> 01:21:46.197
gehabt, aber da sollte man auch immer

01:21:46.197 --> 01:21:48.297
drauf achten, was man sich da für ein Projekt

01:21:48.297 --> 01:21:49.978
anschaut, ob da wirklich

01:21:49.978 --> 01:21:52.058
regelmäßig Releases rauskommen und die

01:21:52.058 --> 01:21:53.478
Issues auch abgearbeitet werden.

01:21:54.058 --> 01:21:55.958
Ja, ich würde auch sagen, tatsächlich, also insgesamt bei

01:21:55.958 --> 01:21:57.797
Libraries so ein bisschen die Frage, also

01:21:57.797 --> 01:22:00.197
manchmal tendiert man ja so ein bisschen dazu, immer den neuesten

01:22:00.197 --> 01:22:01.418
heißen geilen Scheiß zu benutzen.

01:22:02.657 --> 01:22:04.277
Wenn der aber dann halt im halben Jahr wieder weg ist,

01:22:04.337 --> 01:22:06.138
dann ist es halt blöd, wenn man halt Projekte darauf

01:22:06.138 --> 01:22:07.757
direkt aufgebaut hat.

01:22:08.438 --> 01:22:09.918
Und dann so diese ganzen abgehangenen Sachen,

01:22:09.918 --> 01:22:11.877
die sind vielleicht nicht immer so eine blöde Idee.

01:22:12.797 --> 01:22:12.857
Ja.

01:22:12.857 --> 01:22:15.177
und ja, absolut.

01:22:17.077 --> 01:22:18.297
Ja, das ist halt immer so ein bisschen,

01:22:18.717 --> 01:22:20.737
ja, irgendwie,

01:22:20.898 --> 01:22:23.138
es ist ein nicht unerhebliches

01:22:23.138 --> 01:22:25.058
Feature, dass Dinge halt langweilig,

01:22:25.237 --> 01:22:27.117
boring und alt

01:22:27.117 --> 01:22:28.958
sind. Das kann auch

01:22:28.958 --> 01:22:29.717
sehr gut sein.

01:22:31.018 --> 01:22:32.918
Ja, alleine schon auch, weil dann

01:22:32.918 --> 01:22:34.817
man in den Issues ja häufig

01:22:34.817 --> 01:22:37.018
genau das Problem

01:22:37.018 --> 01:22:38.817
findet, was man gerade hat und dass das schon

01:22:38.817 --> 01:22:40.857
beantwortet wurde. Alleine sowas kann ja unheimlich

01:22:40.857 --> 01:22:42.797
hilfreich sein, dass einfach

01:22:42.797 --> 01:22:44.657
solche Probleme schon besprochen wurden

01:22:44.657 --> 01:22:46.898
und schon zig Leute das gleiche hatten.

01:22:47.817 --> 01:22:48.297
Ja, genau.

01:22:48.717 --> 01:22:50.598
Und man kann ChatGPT fragen,

01:22:50.598 --> 01:22:52.638
weil es war vor 2021

01:22:52.638 --> 01:22:54.598
schon irgendwie etwas,

01:22:54.717 --> 01:22:55.398
was man finden konnte.

01:22:58.018 --> 01:23:00.337
Ja, das ist halt genau.

01:23:00.777 --> 01:23:02.717
Ich weiß nicht. Das finde ich zum Beispiel bei Django

01:23:02.717 --> 01:23:03.197
immer toll.

01:23:03.657 --> 01:23:05.337
Ich mag ja fast API.

01:23:06.357 --> 01:23:08.177
Ich mag das sehr gerne. Ich mag auch PyLentic.

01:23:08.277 --> 01:23:08.938
Ich finde den Ansatz super.

01:23:09.617 --> 01:23:12.398
Aber das ist etwas, was bei Django

01:23:12.398 --> 01:23:42.377
und

01:23:42.398 --> 01:23:44.617
und die Leute, die es benutzen, denken sie so, oh nein.

01:23:46.317 --> 01:23:47.617
Ja gut, aber es ist halt auch so ein Fade-off.

01:23:47.717 --> 01:23:50.138
Du hast natürlich einerseits Interessen geleitete Entwicklung dann

01:23:50.138 --> 01:23:52.498
und die ist halt nicht mehr vielleicht so ganz neutral.

01:23:52.898 --> 01:23:54.877
Ja, vor allen Dingen, weil Leute dann irgendwann ihr Geld wieder haben.

01:23:55.538 --> 01:23:58.938
Ja, aber das ist ein Problem, aber eine andere Frage ist halt auch,

01:23:58.938 --> 01:24:02.098
du hast tatsächlich dann halt Zeit da und Geld da, Sachen zu bauen.

01:24:03.117 --> 01:24:05.438
Ja, also brauchst du ein Geschäftsmodell, willst du eins haben, willst du nichts.

01:24:05.877 --> 01:24:08.638
Und was immer ganz schlecht ist, wenn die Leute auf einmal halt ihr Geschäftsmodell

01:24:08.638 --> 01:24:09.638
dann so für dich anpassen.

01:24:09.638 --> 01:24:11.837
Ja, genau, aber das

01:24:11.837 --> 01:24:13.697
finde ich eben bei solchen Projekten dann halt auch oft

01:24:13.697 --> 01:24:15.217
irgendwie sehr nett, wenn die dann

01:24:15.217 --> 01:24:17.857
wenn es halt wirkliche Open-Source-Projekte sind in der Community

01:24:17.857 --> 01:24:19.197
wo nicht eine Firma dahinter steht

01:24:19.197 --> 01:24:21.697
und wenn man halt eine Firma hat, dann ist immer

01:24:21.697 --> 01:24:23.737
es ist tendenziell

01:24:23.737 --> 01:24:25.538
eher kurzlebiger, weil vielleicht

01:24:25.538 --> 01:24:27.237
haben Firmen dann auch mal andere Prioritäten

01:24:27.237 --> 01:24:29.677
Kleine Anekdote am Rennen, ich weiß nicht, ob ihr es mitbekommen habt

01:24:29.677 --> 01:24:31.598
und ob ihr euch damit auskennt, aber es gibt

01:24:31.598 --> 01:24:32.938
Unity Game Engine

01:24:32.938 --> 01:24:35.657
und das muss halt ganz

01:24:35.657 --> 01:24:37.197
viel Open-Source oder irgendwie so

01:24:37.197 --> 01:24:39.398
Indie-Studios. Die haben halt auf Unity

01:24:39.398 --> 01:24:41.518
gesetzt und halt da ihre Spiele entwickelt.

01:24:42.038 --> 01:24:43.297
Und die haben dann irgendwie gesagt, so ja,

01:24:43.398 --> 01:24:45.558
neue Version jetzt übrigens. Ach, und alle Projekte,

01:24:45.638 --> 01:24:47.498
also auch alle, die ihr irgendwann mal angefangen habt,

01:24:47.598 --> 01:24:49.377
die sollen jetzt bitte pro Installation

01:24:49.377 --> 01:24:50.538
so viel Geld zahlen.

01:24:52.197 --> 01:24:53.478
Das war natürlich auf einmal

01:24:53.478 --> 01:24:55.598
geknallt. Ich würde sagen,

01:24:55.677 --> 01:24:56.877
ist tot. Mal gucken.

01:24:57.697 --> 01:24:59.177
Ja, es war sehr blöd.

01:24:59.297 --> 01:25:01.237
Und die Leute müssen jetzt alle ihre Projekte umziehen und so.

01:25:01.577 --> 01:25:03.317
Die sind jetzt wieder mal zurückgerudert, wie es

01:25:03.317 --> 01:25:05.177
halt immer so ist. Kommen wir so raus. Aber

01:25:05.177 --> 01:25:06.877
solche Sachen sind natürlich gefährlich.

01:25:06.877 --> 01:25:07.877
und PyTest.

01:25:07.877 --> 01:25:08.877
Dominik Pintscher,

01:25:08.877 --> 01:25:09.877
Jürgen Lange,

01:25:09.877 --> 01:25:10.877
Jürgen Lange,

01:25:10.877 --> 01:25:11.877
Jürgen Lange,

01:25:11.877 --> 01:25:12.877
Jürgen Lange,

01:25:12.877 --> 01:25:13.877
Jürgen Lange,

01:25:13.877 --> 01:25:14.877
Jürgen Lange,

01:25:14.877 --> 01:25:15.877
Jürgen Lange,

01:25:15.877 --> 01:25:16.877
Jürgen Lange,

01:25:16.877 --> 01:25:17.877
Jürgen Lange,

01:25:17.877 --> 01:25:18.877
Jürgen Lange,

01:25:18.877 --> 01:25:19.877
Jürgen Lange,

01:25:19.877 --> 01:25:20.877
Jürgen Lange,

01:25:20.877 --> 01:25:21.877
Jürgen Lange,

01:25:21.877 --> 01:25:22.877
Jürgen Lange,

01:25:22.877 --> 01:25:23.877
Jürgen Lange,

01:25:23.877 --> 01:25:24.877
Jürgen Lange,

01:25:24.877 --> 01:25:25.877
Jürgen Lange,

01:25:25.877 --> 01:25:26.877
Jürgen Lange,

01:25:26.877 --> 01:25:27.877
Jürgen Lange,

01:25:27.877 --> 01:25:28.877
Jürgen Lange,

01:25:28.877 --> 01:25:29.877
Jürgen Lange,

01:25:29.877 --> 01:25:30.877
Jürgen Lange,

01:25:30.877 --> 01:25:31.877
Jürgen Lange,

01:25:31.877 --> 01:25:32.877
Jürgen Lange,

01:25:32.877 --> 01:25:33.877
Jürgen Lange,

01:25:33.877 --> 01:25:34.877
Jürgen Lange,

01:25:34.877 --> 01:25:37.077
oder die so genügsam sind,

01:25:37.177 --> 01:25:39.117
dass sie halt den ganzen Tag verbringen

01:25:39.117 --> 01:25:41.058
können mit wunderbaren Beiträgen an die

01:25:41.058 --> 01:25:43.138
Community, aber oft ist man halt

01:25:43.138 --> 01:25:44.857
leider gerade mit Familienhintergrund oder sowas

01:25:44.857 --> 01:25:47.117
dazu gezwungen, irgendeiner Erwerbstätigkeit

01:25:47.757 --> 01:25:48.657
nachzugehen, die irgendwie

01:25:48.657 --> 01:25:51.197
Einkommen erwirtschaftet und wenn das halt mit Obstlos nicht geht,

01:25:51.297 --> 01:25:52.757
ist es halt schwierig.

01:25:53.918 --> 01:25:54.998
Also ich versuche

01:25:54.998 --> 01:25:57.058
auch immer tatsächlich bei den Konzernen, wo ich irgendwie so

01:25:57.058 --> 01:25:58.938
da bin, irgendwen zu bewegen,

01:25:59.117 --> 01:26:01.157
dass das so Geld zurückgibt,

01:26:01.297 --> 01:26:02.918
also dass die zumindest dann so Spenden machen an Projekte

01:26:02.918 --> 01:26:06.657
oder so, aber die hören dann immer so, ja, ja, total tolle Idee, würden wir auch total gerne machen, aber nein.

01:26:07.958 --> 01:26:09.038
Passiert eher selten, leider.

01:26:09.197 --> 01:26:10.898
Ja, denen ist das dann egal.

01:26:10.998 --> 01:26:14.538
Man müsste halt einen Grund dafür liefern können und das ist, glaube ich, halt auch eins

01:26:14.538 --> 01:26:18.038
der Dinge, wo man sich über Sachen überlegen müsste, wie man das hängt.

01:26:18.117 --> 01:26:19.357
Also es gibt ja diverse Ideen.

01:26:19.458 --> 01:26:23.058
Ah, ich finde übrigens genau dieses Material Theme für MKDocs, du hattest das eben erwähnt,

01:26:23.717 --> 01:26:27.038
der Autor davon, der hat einen sehr schönen Weg gefunden, um damit Geld zu erzielen.

01:26:27.038 --> 01:26:28.518
Der lebt ausschließlich davon

01:26:28.518 --> 01:26:30.797
und der

01:26:30.797 --> 01:26:32.657
lebt eigentlich quasi davon,

01:26:32.797 --> 01:26:34.817
dass ein Unternehmen einen Grund gibt,

01:26:34.918 --> 01:26:36.438
ihm Geld dafür zu bezahlen. Und zwar

01:26:36.438 --> 01:26:38.138
gibt es halt alle Features

01:26:38.138 --> 01:26:40.518
zuerst für eine Bezahlversion

01:26:40.518 --> 01:26:42.277
und

01:26:42.277 --> 01:26:44.717
die werden aber irgendwann dann halt

01:26:44.717 --> 01:26:46.898
quasi auch in der, kommen halt in die

01:26:46.898 --> 01:26:48.737
normale rein und alles ist Open Source,

01:26:48.898 --> 01:26:50.697
aber wenn du halt irgendwie das ein bisschen

01:26:50.697 --> 01:26:52.398
früher haben willst als andere, dann musst du halt zahlen.

01:26:52.938 --> 01:26:54.438
Und das funktioniert wohl sehr, sehr gut.

01:26:54.438 --> 01:26:56.217
Also, ja.

01:26:57.038 --> 01:26:59.138
Aber ansonsten, ich würde sagen, das ist das zentrale Problem.

01:26:59.317 --> 01:27:00.938
Also wie kann man Unternehmen klar machen,

01:27:02.577 --> 01:27:03.398
ja, es wäre nicht nur nett,

01:27:03.458 --> 01:27:05.177
wenn ihr das tun würdet, sondern ihr habt auch einen Vorteil dafür.

01:27:05.177 --> 01:27:07.418
Ja, also ich finde auch

01:27:07.418 --> 01:27:09.337
diese, also ich muss halt auch

01:27:09.337 --> 01:27:10.958
darauf angewiesen sein, dass ich jetzt

01:27:10.958 --> 01:27:13.257
Open Source-Wörter, die ich benutze, dass ich die für alles nutzen kann.

01:27:13.377 --> 01:27:15.398
Also auch für Business, weil sonst kann ich die halt für meine Arbeit

01:27:15.398 --> 01:27:17.498
nicht verwenden. Was aber halt

01:27:17.498 --> 01:27:19.277
doof ist, wenn es halt nie, wenn

01:27:19.277 --> 01:27:21.098
irgendjemand damit richtig viel Geld mitfindet, der halt nichts zurückgibt.

01:27:21.177 --> 01:27:23.317
Das ist halt irgendwie so der Deal dann gebrochen und die Frage ist halt,

01:27:23.357 --> 01:27:25.237
ob man das lizenztechnisch irgendwie lösen kann. Ich würde sagen, eher nicht.

01:27:25.237 --> 01:27:28.958
und das ist halt eher kacke.

01:27:29.138 --> 01:27:30.958
Also bei mir fühlt es sich halt so, dass ich das gar nicht verwenden kann,

01:27:31.098 --> 01:27:33.697
weil dann ich sonst Designsprobleme kriege,

01:27:34.518 --> 01:27:35.697
die ich halt nicht haben darf.

01:27:35.777 --> 01:27:37.317
Deswegen kann ich die Software mit AGPL nicht verwenden

01:27:37.317 --> 01:27:39.297
für Arbeitsprojekte, sondern nur irgendwie in der Freizeit.

01:27:39.518 --> 01:27:40.938
Und das bringt es halt irgendwie nicht.

01:27:43.018 --> 01:27:44.857
Ja, aber ja, schwierige.

01:27:45.138 --> 01:27:46.297
Auch wieder ein schwieriger Ansatz.

01:27:47.598 --> 01:27:49.657
Man kann ja jetzt zumindest bei bestimmten Projekten,

01:27:49.697 --> 01:27:51.777
wenn man sie selbst als User hilfreich findet,

01:27:51.777 --> 01:27:55.197
über GitHub Sponsors da was zurückgeben.

01:27:55.237 --> 01:27:58.677
Das finde ich manchmal ganz schön. Und wenn es mal nur ein paar Euro sind, die Wertschätzung

01:27:58.677 --> 01:28:00.438
doch irgendwie mitzuteilen.

01:28:03.558 --> 01:28:04.777
Ja, das ist notwendig.

01:28:04.998 --> 01:28:07.898
Aber schwierig, weil du halt davon abgewiesen bist, dass das so dieses Spenden-Ding

01:28:07.898 --> 01:28:12.697
eigentlich, also meiner Meinung nach müsste so der Staat so ein bisschen

01:28:12.697 --> 01:28:16.177
mit der Gießkanne vielleicht sogar dahin gehen und was machen. Gerade bei OMSOS.

01:28:16.757 --> 01:28:20.398
Das hat ja noch viel zu wenig für sich entdeckt, weil also auch Behörden und so sind ja abhängig von sowas. Und ich finde,

01:28:20.998 --> 01:28:24.638
das wäre eigentlich so eine gute Sache, dass man sagt, okay, es gibt jetzt so ein Budget, die halt dann

01:28:24.638 --> 01:28:26.377
investieren müssen in so eine Infrastruktur.

01:28:27.697 --> 01:28:28.717
Ja, aber

01:28:28.717 --> 01:28:30.498
das ist halt auch wieder das, bist du das,

01:28:30.797 --> 01:28:32.737
oder ist halt das Problem, das zu

01:28:32.737 --> 01:28:34.558
erklären, dass es so schwierig ist. Ja, nach so irgendwie so ein

01:28:34.558 --> 01:28:35.877
Prozess und dann so, ja.

01:28:36.638 --> 01:28:38.638
Aber ja, vielleicht wäre tatsächlich

01:28:38.638 --> 01:28:40.458
da einfach das mit Steuergeld, aber

01:28:40.458 --> 01:28:42.577
ja, ich sehe nicht,

01:28:42.677 --> 01:28:43.098
dass das passiert.

01:28:43.098 --> 01:28:43.478
Ja.

01:28:44.958 --> 01:28:45.398
Ja.

01:28:46.538 --> 01:28:49.177
Habt ihr einen Pick der Woche? Pick der Folge?

01:28:49.898 --> 01:28:50.098
Oh.

01:28:51.817 --> 01:28:53.217
Habe ich irgendwelche Picks?

01:28:53.918 --> 01:28:54.138
Hm.

01:28:54.638 --> 01:29:24.617
und PyTest.

01:29:24.638 --> 01:29:26.638
Quad Template irgendwo liegen oder sowas und das ist halt

01:29:26.638 --> 01:29:27.918
direkt mit drin.

01:29:28.518 --> 01:29:29.857
Ja, die Idee sozusagen ist,

01:29:30.777 --> 01:29:32.458
Class-Based Views ist halt

01:29:32.458 --> 01:29:34.638
in general problematisch, weil man

01:29:34.638 --> 01:29:36.598
erbt von ganz vielen Dingen und die

01:29:36.598 --> 01:29:38.777
Dinge erben wieder von ganz viel und oft hat man das Problem,

01:29:38.857 --> 01:29:40.717
dass man nicht weiß, welche Methode muss man

01:29:40.717 --> 01:29:42.038
denn jetzt überschreiben oder

01:29:42.038 --> 01:29:44.518
welche darf man auf gar keinen Fall überschreiben und

01:29:44.518 --> 01:29:46.617
wann passiert eigentlich was? Jochen ändert da an der Stelle seine Meinung

01:29:46.617 --> 01:29:48.357
auch immer, wie seine Hosen,

01:29:48.617 --> 01:29:50.098
weil ab und zu reden wir immer drüber,

01:29:50.098 --> 01:29:51.978
dann fragt man sich, was ist die Class-Base?

01:29:52.458 --> 01:29:53.157
Nein, okay, nicht ganz.

01:29:53.157 --> 01:29:55.498
aber, also ich mag Class-Based Views

01:29:55.498 --> 01:29:56.398
hinterher immer noch sehr gerne

01:29:56.398 --> 01:29:59.177
Ja, also ich finde Class-Based Views

01:29:59.177 --> 01:30:01.377
im Prinzip auch nicht schlecht, nur die sind schon sehr kompliziert

01:30:01.377 --> 01:30:03.458
und quasi so Vererbungs-Hierarchien

01:30:03.458 --> 01:30:04.077
sind halt auch etwas

01:30:04.077 --> 01:30:06.797
Ja, aber dann machst du halt einfach keine Vererbung, sondern erbst halt einfach noch von einem View

01:30:06.797 --> 01:30:08.138
und dann hast du aber eine wunderschöne

01:30:08.138 --> 01:30:09.797
Interface

01:30:09.797 --> 01:30:13.157
Wenn du den Form-View nimmst, der erbt halt von

01:30:13.157 --> 01:30:14.157
fünf unterschiedlichen Sachen

01:30:14.157 --> 01:30:16.837
Ja, dann nimm halt keinen Form-View

01:30:16.837 --> 01:30:18.418
Ja gut, okay, klar, aber

01:30:18.418 --> 01:30:21.117
die Class-Based Views sind halt so komplizierte

01:30:21.117 --> 01:30:22.357
Vererbungs-Hierarchie und

01:30:22.357 --> 01:30:24.337
und man braucht dann halt sowas wie

01:30:24.337 --> 01:30:25.817
Classy Class-Based Views,

01:30:26.098 --> 01:30:28.098
gibt so eine schöne Seite, wo man dann halt sehen kann

01:30:28.098 --> 01:30:30.317
und

01:30:30.317 --> 01:30:32.438
es ist halt vielleicht einfach

01:30:32.438 --> 01:30:34.317
ein bisschen viel und deswegen sind

01:30:34.317 --> 01:30:36.398
viele auf der, nee, ich verwende

01:30:36.398 --> 01:30:37.958
nur Funktionen als Videos.

01:30:37.958 --> 01:30:40.018
Ja, man hat dann If, Request, Message,

01:30:40.237 --> 01:30:41.297
Post und sowas und boah.

01:30:41.657 --> 01:30:44.197
Ja, hat dann auch Nachteile, klar.

01:30:44.598 --> 01:30:45.958
Und jetzt die Frage, gibt es was dazwischen und

01:30:45.958 --> 01:30:47.978
genau, es gab dann irgendwann von

01:30:47.978 --> 01:30:50.237
Tom Christie Vanilla Views,

01:30:50.237 --> 01:30:51.498
sozusagen, um halt diese

01:30:51.498 --> 01:30:53.877
diese ausufernde Vererbungshierarchie in den Griff zu kriegen.

01:30:54.958 --> 01:30:55.898
Aber das ist halt

01:30:55.898 --> 01:30:57.677
ein bisschen sehr wenig. Und dann war halt sozusagen

01:30:57.677 --> 01:30:59.018
die Idee der Neapolitanen,

01:30:59.337 --> 01:31:01.498
es muss ein bisschen mehr sein als Vanilla.

01:31:01.837 --> 01:31:03.577
Also das ist quasi das, wenn man das nicht kennt,

01:31:03.918 --> 01:31:05.357
also hier ist das immer, ich heiße das ganz schrecklich,

01:31:05.438 --> 01:31:06.277
der Name Fürst Pückler

01:31:06.277 --> 01:31:08.038
oder so.

01:31:08.737 --> 01:31:11.357
Und ich glaube, die internationale

01:31:11.357 --> 01:31:13.418
der Name dafür ist Neapolitan.

01:31:14.617 --> 01:31:15.797
Und deswegen

01:31:15.797 --> 01:31:17.757
es war halt sozusagen die Idee, es ist ein bisschen mehr als Vanilla,

01:31:17.757 --> 01:31:18.498
aber nicht sehr viel mehr.

01:31:20.438 --> 01:31:20.797
Interessant.

01:31:21.498 --> 01:31:22.777
Also ich kann immer empfehlen,

01:31:23.297 --> 01:31:24.737
quasi Themenwechsel, anderer Pick,

01:31:25.478 --> 01:31:27.197
was ich auch vorhin schon erwähnt habe, Material für

01:31:27.197 --> 01:31:29.277
mkdocs, finde ich ein super

01:31:29.277 --> 01:31:31.077
cooles Package, wo man wirklich

01:31:31.077 --> 01:31:33.297
einfach tolle Dokumentationen bauen kann,

01:31:34.038 --> 01:31:34.978
was doch

01:31:34.978 --> 01:31:37.157
meiner Erfahrung nach viel zu selten gemacht wird.

01:31:37.357 --> 01:31:38.617
Mit was ist die Basis? Markdown?

01:31:39.938 --> 01:31:40.177
Genau.

01:31:41.518 --> 01:31:43.317
Und dann kann man die Dokumentation

01:31:43.317 --> 01:31:45.157
mit in seinem Repo haben. Ich habe das

01:31:45.157 --> 01:31:47.157
so häufig schon mitgekriegt in Kundenprojekten, dass es

01:31:47.157 --> 01:31:49.458
überall verteilt war. Manchmal stand was im Readme-File,

01:31:49.538 --> 01:31:51.257
dann gab es noch eine Confluence-Seite, manches

01:31:51.257 --> 01:31:53.877
in den Jira-Tickets irgendwie dokumentiert.

01:31:54.777 --> 01:31:54.978
Und

01:31:54.978 --> 01:31:57.398
das, finde ich, hat so wenig

01:31:57.398 --> 01:31:59.478
Einstiegshürden, um so eine schöne

01:31:59.478 --> 01:32:00.577
webbasierte

01:32:00.577 --> 01:32:03.138
Oberfläche für seine Documentation

01:32:03.138 --> 01:32:04.498
zu gestalten.

01:32:04.797 --> 01:32:07.018
Würde ich auch bevorzugen,

01:32:07.098 --> 01:32:08.998
was findest du da sowas? Finde ich schöner auch, ja.

01:32:10.357 --> 01:32:10.577
Ja.

01:32:11.038 --> 01:32:12.157
Ja, nee, ich finde das auch super.

01:32:12.598 --> 01:32:14.538
Also, ich verwende es vor allen Dingen

01:32:14.538 --> 01:32:16.277
eben bei Fast-API-Geschichten,

01:32:16.418 --> 01:32:17.217
aber

01:32:17.217 --> 01:32:19.877
ja, ja, nee, das ist schon toll.

01:32:19.877 --> 01:32:21.978
Okay, ja, was könnte ich denn

01:32:21.978 --> 01:32:23.777
Okay, ich picke mal was ganz anderes

01:32:23.777 --> 01:32:25.837
Du hast ja eben schon mit Rezepten

01:32:25.837 --> 01:32:27.777
so ein Buch irgendwie

01:32:27.777 --> 01:32:29.098
da reingeguckt

01:32:29.098 --> 01:32:30.577
Ja, wundervoll, das

01:32:30.577 --> 01:32:33.377
Ottolenghi Flavor, das Gemüsekochbuch

01:32:33.377 --> 01:32:35.257
Und zwar

01:32:35.257 --> 01:32:36.938
gibt es den

01:32:36.938 --> 01:32:39.837
gibt es ein schönes, wenn man auf Mac ist

01:32:39.837 --> 01:32:41.817
gibt es eine sehr, sehr

01:32:41.817 --> 01:32:43.257
schöne App, die nennt sich

01:32:43.257 --> 01:32:45.538
Paprika Receipt Manager

01:32:45.538 --> 01:32:47.777
und genau

01:32:47.777 --> 01:32:49.558
das verwende ich seit einiger Zeit

01:32:49.558 --> 01:32:51.898
und das ist ganz toll. Hast du das nicht schon mal gesagt?

01:32:51.958 --> 01:32:53.577
Habe ich das schon mal gepickt? Oh nein!

01:32:53.757 --> 01:32:56.098
Ich weiß nicht, ob du das gepickt hast, aber wir hatten es schon ein paar Mal.

01:32:56.777 --> 01:32:57.657
Ah ja, okay, kann sein.

01:32:57.737 --> 01:32:58.438
Ich sage immer das Gleiche.

01:33:00.077 --> 01:33:01.777
Ja, ich habe

01:33:01.777 --> 01:33:03.677
für mich auch dabei. Aber es ist gut,

01:33:03.737 --> 01:33:05.918
dass ihr das nochmal gesagt habt, weil ich hatte es nicht mehr auf dem Schirm.

01:33:06.837 --> 01:33:07.677
Also ich finde, manchmal

01:33:07.677 --> 01:33:09.598
muss man einige schöne Sachen nochmal ein paar Mal

01:33:09.598 --> 01:33:11.337
sagen. Man kann Dinge auch öfter sagen.

01:33:11.617 --> 01:33:13.638
Wer weiß, wer immer bis zum Ende von jeder Folge

01:33:13.638 --> 01:33:15.538
bleibt und wenn wir gerade so spannende Folgen haben,

01:33:15.677 --> 01:33:17.478
wie wir manchmal haben wir spannende Folgen,

01:33:17.478 --> 01:33:20.217
dann, wer weiß, wie viele Leute am Ende noch übrig sind.

01:33:22.837 --> 01:33:23.197
Genau.

01:33:24.317 --> 01:33:24.518
Ja.

01:33:25.697 --> 01:33:27.558
Dann ganz vielen herzlichen Dank an den Nena, dass du da warst.

01:33:27.558 --> 01:33:28.038
Vielen, vielen Dank.

01:33:29.098 --> 01:33:30.478
Danke, dass ihr mich angeladen habt.

01:33:31.498 --> 01:33:33.757
Und ja, bleibt uns gewogen, schaltet uns weiter rein,

01:33:33.837 --> 01:33:35.518
morgens, abends und so weiter und wir wünschen euch

01:33:35.518 --> 01:33:37.058
eine wunderschöne gute Zeit und bis zum nächsten Mal.

01:33:37.058 --> 01:33:39.478
Und hoffentlich bis in gar nicht mal allzu langer Zeit.

01:33:39.478 --> 01:33:40.737
Ja, erliegt mal das, wenn es nicht so viel Zeit.

01:33:41.717 --> 01:33:43.337
Ja, wir haben noch so ein paar Sachen.

01:33:43.837 --> 01:33:44.817
Gut, bis dann. Tschüss.
