Kjente problemer med Spyder

Mange bruker Spyder til programmeringen i IN1900. Inntrykket vårt er at det fungerer fint til det aller meste, men vi får en del tilbakemeldinger om ting som ikke fungerer. Noen av disse feilmeldingene skyldes nok rene "brukerfeil" eller det kan være noe feil med en bestemt installasjon av Spyder, men andre er mer generelle. De fleste problemene vi hører om er knyttet enten programmer som skal ha bruker-input eller til animasjoner i matplotlib. En mulig løsning er å kjøre akkurat disse programmene i terminalvinduet, men det skal også være mulig å løse problemene i Spyder. Her er noen av de vanligste feilene og hvordan de kan løses.

Kommandolinjeargumenter

Vi får mange meldinger om at det ikke fungerer å bruke kommandolinjeargumenter i Spyder. Dette skal virke, men man må kjøre programmet fra iPython terminal-panelet. (Vanligvis plassert nederst til høyre i Spyder-vinduet). Siden dette er et iPython-vindu kjører man programmet med run myprog.py. (Ikke python myprog.py som brukes i det vanlige terminalvinduet) De fleste andre kommandoer virker på samme måte som i terminalen; cd, ls, etc. Hvis man kjører programmet på denne måten skal det fungere fint å sende med kommandolinjeargumenter på vanlig måte:

run myprog.py arg1 arg2 ...

Dette er testet og fungerer fint i Spyder versjon 5.1.5 (Python 3.9) på Mac. Send gjerne en mail til sundnes@ifi.uio.no hvis du opplever at det ikke fungerer på din maskin.

Bruk av funksjonen input()

Noen har opplevd at funksjonen input() ikke fungerer i Spyder. Dette er også noe som skal fungere fint, uansett om man kjører programmet fra ipython-terminalen eller med "play"-knappen i verktøylinjen. Etter litt googling har jeg funnet ut at det er et kjent problem, og skal være en bug i en spesifikk versjon i Spyder. Det skal kunne løses ved å oppgradere Spyder, og det er testet og fungerer fint i Spyder versjon 5.1.5 (Python 3.9) på Mac. Send gjerne mail til sundnes@ifi.uio.no hvis det ikke virker på din maskin, og det ikke hjelper å oppdatere Spyder.

Animasjoner med matplotlib

Animasjoner med matplotlib virker ikke med standard instillinger i Python. Kodene fra forelesningene uke 38 er lagt ut her, og kan kjøres i Spyder på vanlig måte, f.eks.:

run animation_v1.py

Problemet med dette er at med vanlige innstillinger i Spyder får man bare opp ett enkelt plott, og ikke en animasjon. For å vise animasjonen må man endre innstillingene for hvordan grafikk vises. På Mac gjøres det ved å åpne Preferences, velge "IPython console" fra menyen, deretter fanen "Graphics", og så velge "Automatic" som Graphics Backend. Default-valget er "Inline" som viser plott som en del av iPython-vinduet og ikke kan vise animasjoner. Denne korte filmen viser et skjermbilde av de riktige innstillingene: Grafikk-innstillinger for Spyder (Mac)