{"id":1308,"date":"2018-04-12T14:33:50","date_gmt":"2018-04-12T12:33:50","guid":{"rendered":"http:\/\/ictknow-how.ch\/blog\/?p=1308"},"modified":"2023-05-08T10:39:51","modified_gmt":"2023-05-08T08:39:51","slug":"python-code-mit-visual-studio-2017-debuggen-part-2-gewoehnungsbeduerftiges-ausfuehren","status":"publish","type":"post","link":"https:\/\/ictknow-how.ch\/blog\/2018\/04\/12\/python-code-mit-visual-studio-2017-debuggen-part-2-gewoehnungsbeduerftiges-ausfuehren\/","title":{"rendered":"Python-Code mit Visual Studio 2017 debuggen? Part 2 &#8211; Gew\u00f6hnungsbed\u00fcrftiges Ausf\u00fchren"},"content":{"rendered":"<p>Wer sich in Visual Studio 2017 die <a href=\"https:\/\/ictknow-how.ch\/blog\/2018\/04\/12\/python-code-mit-visual-studio-2017-debuggen-part-1-die-installation\/\">Python-Umgebungsentwicklung eingerichtet<\/a> und den Python-Sourcecode geladen hat, startet wie unter .NET gewohnt mit <kbd class=\"keyboard-key nowrap KeybKey\">F5<\/kbd> die Ausf\u00fchrung des Codes.<\/p>\n<p>Normalerweise w\u00fcrde man nun erwarten, dass sich nach ein paar Sekunden die Benutzeroberfl\u00e4che zeigt, in unserem Beispiel die von <a href=\"https:\/\/picard.musicbrainz.org\/\" target=\"_blank\" rel=\"noopener\"><em>Picard<\/em><\/a>. Bei Picard stoppt die Ausf\u00fchrung aber in der&nbsp; __init__.py-Datei wegen einer nicht behandelten Ausnahme:<\/p>\n<p><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Ausf\u00fchrung-gestoppt.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1311 size-full\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Ausf\u00fchrung-gestoppt.png\" alt=\"\" width=\"1035\" height=\"472\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Ausf\u00fchrung-gestoppt.png 1035w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Ausf\u00fchrung-gestoppt-300x137.png 300w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Ausf\u00fchrung-gestoppt-768x350.png 768w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Ausf\u00fchrung-gestoppt-1024x467.png 1024w\" sizes=\"auto, (max-width: 1035px) 100vw, 1035px\" \/><\/a><\/p>\n<p>Als .NET-Entwickler staunt man erstmal, wieso das nicht funktioniert. Als Python-Anf\u00e4nger sowieso. Aber anscheinend verh\u00e4lt sich die Ausf\u00fchrung von Python-Code nicht gleich wie bei .NET-Projekten. Hier kann man n\u00e4mlich auf <kbd class=\"keyboard-key nowrap KeybKey\">F5<\/kbd> dr\u00fccken und hoffen, dass es weiter geht. An dieser Stelle dr\u00fcckt man sogar mehrere Male auf <kbd class=\"keyboard-key nowrap KeybKey\">F5<\/kbd>! Vielleicht kann ja jemand in den Kommentaren erkl\u00e4ren, wieso das so sein muss?<\/p>\n<p>Als n\u00e4chstes landet man bei<a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Breakpoint-setzen.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1315\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Breakpoint-setzen.png\" alt=\"\" width=\"1155\" height=\"230\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Breakpoint-setzen.png 1155w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Breakpoint-setzen-300x60.png 300w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Breakpoint-setzen-768x153.png 768w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Breakpoint-setzen-1024x204.png 1024w\" sizes=\"auto, (max-width: 1155px) 100vw, 1155px\" \/><\/a><\/p>\n<p>Auch hier wird ein \u00abFehler\u00bb angezeigt, der eigentlich keiner ist. Setzt man z.B. mit <kbd class=\"keyboard-key nowrap KeybKey\">F9<\/kbd> einen Breakpoint auf der mit #1 markierten Codezeile und dr\u00fcckt <kbd class=\"keyboard-key nowrap KeybKey\">F5<\/kbd>, sieht man, dass zuerst die Variante unter <code>try:<\/code> ausprobiert wird &#8211; und weil irgendwie ung\u00fcltig &#8211; mit der <code>except<\/code>-Variante weitergemacht wird. So geht das weiter, bis man nach unz\u00e4hligen weiteren <kbd class=\"keyboard-key nowrap KeybKey\">F5<\/kbd> endlich das GUI von Picard sieht:<\/p>\n<p><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Endlich-sieht-man-das-Picard-GUI.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1317\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Endlich-sieht-man-das-Picard-GUI.png\" alt=\"\" width=\"1210\" height=\"780\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Endlich-sieht-man-das-Picard-GUI.png 1210w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Endlich-sieht-man-das-Picard-GUI-300x193.png 300w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Endlich-sieht-man-das-Picard-GUI-768x495.png 768w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2018\/04\/Endlich-sieht-man-das-Picard-GUI-1024x660.png 1024w\" sizes=\"auto, (max-width: 1210px) 100vw, 1210px\" \/><\/a><\/p>\n<p>Setzt man nun im Python-Code die gew\u00fcnschten Breakpoints, kann man in gewohnter Art und Weise den Code debuggen.<\/p>\n<p>Auch \u00abIntelliSense\u00bb ist \u00fcbrigens verf\u00fcgbar! Dazu muss man jedoch erst im Tab \u00abPython-Umgebungen\u00bb die gew\u00fcnschte Umgebung ausw\u00e4hlen, dann auf \u00ab\u00dcbersicht\u00bb klicken und \u00abIntelliSense\u00bb ausw\u00e4hlen. Beim allerersten Mal wird man darauf aufmerksam gemacht, dass beim n\u00e4chsten VS-Start die entsprechende Datenbank aufgebaut wird. Beim n\u00e4chsten Aufruf steht einem an gleicher Stelle ein <kbd class=\"keyboard-key nowrap KeybKey\">DB aktualisieren<\/kbd>-Button zur Verf\u00fcgung. Das dauert \u00fcbrigens je nach Anzahl geladener PIP-Pakete seine Zeit.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;1308&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;Rate this post&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Python-Code mit Visual Studio 2017 debuggen? Part 2 - Gew\u00f6hnungsbed\u00fcrftiges Ausf\u00fchren&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\">Rate this post<\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wer sich in Visual Studio 2017 die Python-Umgebungsentwicklung eingerichtet und den Python-Sourcecode geladen hat, startet wie unter .NET gewohnt mit F5 die Ausf\u00fchrung des Codes. Normalerweise w\u00fcrde man nun erwarten, dass sich nach ein paar Sekunden die Benutzeroberfl\u00e4che zeigt, in unserem Beispiel die von Picard. Bei Picard stoppt die Ausf\u00fchrung aber in der&nbsp; __init__.py-Datei wegen &#8230; <a title=\"Python-Code mit Visual Studio 2017 debuggen? Part 2 &#8211; Gew\u00f6hnungsbed\u00fcrftiges Ausf\u00fchren\" class=\"read-more\" href=\"https:\/\/ictknow-how.ch\/blog\/2018\/04\/12\/python-code-mit-visual-studio-2017-debuggen-part-2-gewoehnungsbeduerftiges-ausfuehren\/\" aria-label=\"Mehr Informationen \u00fcber Python-Code mit Visual Studio 2017 debuggen? Part 2 &#8211; Gew\u00f6hnungsbed\u00fcrftiges Ausf\u00fchren\">Weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[256,111,112,113],"class_list":["post-1308","post","type-post","status-publish","format-standard","hentry","category-musicbrainz","tag-debugging","tag-picard","tag-python","tag-visual-studio-2017"],"_links":{"self":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/posts\/1308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/comments?post=1308"}],"version-history":[{"count":0,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/posts\/1308\/revisions"}],"wp:attachment":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/media?parent=1308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/categories?post=1308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/tags?post=1308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}