Toon posts:

Python in docker 1 machine werkt, anderen niet

Pagina: 1
Acties:

Vraag


  • ljsquare
  • Registratie: April 2006
  • Laatst online: 25-09 23:15
Voor mijn openHAB systeem heb ik een python script geschreven om de vuilnisdagen op te vragen en in een ephemeris file te schrijven (vuilnis.xml).
Nu ben ik bezig met het experimenteren van Docker om mijn python script platform onafhankelijk te maken.
Echter dat valt tegen, althans ik krijg een foutmelding dit ik niet begrijp waarom ik hem krijg.

Op mijn Mac heb ik met python (3.8.3) het volgende script gemaakt:
[code]
from avri.api import Avri

client = Avri('1234AB',123)

upcoming = client.all_upcoming()

header = """<?xml version="1.0" encoding="UTF-8"?>
<tns:Configuration hierarchy="nl" description="Afvalverwerking Avri"
xmlns:tns="https://www.example.org/Holiday" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.example.org/Holiday /Holiday.xsd">
<tns:Holidays>"""
footer = """ </tns:Holidays>
</tns:Configuration>"""
print (header)
for garbage in upcoming:
name = garbage.name
month = garbage.day.strftime("%B")
day = garbage.day.day
if name == "PACKAGES":
name = "Plastic"
if name == "GREEN":
name = "GFT"
print (f' <tns:Fixed month="{month}" day="{day}" descriptionPropertiesKey="{name}" />')
print (footer)
[/code]

Deze werkt zowel lokaal als via een docker prima. Ik krijg de output zoals ik verwacht.
Wat ik gebruik voor docker is het voglende:
[code]docker run -it --rm -v "$PWD":/usr/src/service -w /usr/src/service python:3-slim python -m pip install avri-api && python vuilnis.py > vuilnis.xml[/code]

Nu komt het gekke, op een Rasberry Pi en een Qnapnas (had ff geen ander device om te testen), krijg ik de volgende foutmelding:
[code]
File "vuilnis.py", line 23
print (f' <tns:Fixed month="{month}" day="{day}" descriptionPropertiesKey="{name}" />')
^
SyntaxError: invalid syntax
[/code]

Waarom, wat is er mis met mijn syntax als deze wel werkt op mijn Mac (zowel native als in docker)? :?


Ik heb de fout zelf al gevonden.... mijn docker command
code:
1
python -m pip install avri-api && python vuilnis.py > vuilnis.xml
moet zijn
code:
1
bash -c "python -m pip install avri-api && python vuilnis.py > vuilnis.xml"
|:(

[Voor 5% gewijzigd door ljsquare op 14-02-2021 14:54. Reden: versie python Mac erbij gezet]

Laurens-Jan Merkx




Google Pixel 7 Sony WH-1000XM5 Apple iPhone 14 Samsung Galaxy Watch5, 44mm Sonic Frontiers Samsung Galaxy Z Fold4 Insta360 X3 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2022 Hosting door True

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee