[gelöst] Python: request gibt Fehler zurück

    • [gelöst] Python: request gibt Fehler zurück

      Hi zusammen,
      ich hab einen seltsamen Fehler beim Versuch, eine Webseite mit request zu laden.
      Mach ich das in innerhalb eines Telnet-Fensters, funktioniert es wie gewünscht.
      Display Spoiler
      >>>import requests
      >>> r = requests.get('https://api.github.com')
      >>> r
      <Response [200]>
      Mach ich dasselbe innerhalb eines Plugins, gibts einen Grünen
      Display Spoiler

      File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 325, in _raise_timeout
      if 'timed out' in str(err) or 'did not complete (read)' in str(err): # Python 2.6
      -------
      TypeError: __str__ returned non-string (type Error)
      Bette ich den Aufruf in ein try-except-Konstrukt ein, erhalte ich den entsprechenden Fehler in der except-Ausgabe:
      Display Spoiler
      Jan 18 22:17:30 dm920 enigma2[27257]: __str__ returned non-string (type Error)

      Irgendwelche Ideen / Lösungen?

      Abgesehen davon irritiert mich die Angabe # Python 2.6 im crashlog etwas - im Telnet-Fenster wird mir beim Aufruf von Python V2.7.11 angegeben. Arbeitet da das Plugin mit einer anderen Version? Falls ja, was muss/kann ich da umstellen?
      Danke!
      Alfred
      Yamp - gepimte Version auch für FHD - aktuelle Version V3.2.2 hier, neu: FAQ hier
    • du kannst in der shell die Version angeben, mit der das script gestartet werden soll

      python2.6 script.py

      ich glaube es sind zwei verschiendene Versionen installiert - 2.6 und 2.7
      einfach pyhton[TAB][TAB] in der shell eingeben, dann sollten die installieren python binaries angezeigt werden

      zum python code kann ich mangels Programmierkenntnisse nicht viel sagen
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox
    • Hi Fred,
      danke dir schon wieder - und schon wieder so schnell :D

      python2.6 script.py funzt leider nicht....
      Display Spoiler
      $ python2.6 script.py
      -bash: python2.6: command not found
      Ausserdem wär das ja eh nur interessant, um zu sehen, obs mit 2.6 den gleichen Fehler gibt wie beim Aufruf innerhalb des Plugins.
      Es sieht ja ausserdem eigentlich so aus, als ob das Plugin V2.7 nutzt und das 2.6 nur ein alter Kommentar ist, denn im Crashlog steht ja auch
      Display Spoiler
      "/usr/lib/python2.7/site-package

      Trotzdem danke, einen Versuch wars wert.
      Vielleicht gibts ja noch mehr Ideen....
      Yamp - gepimte Version auch für FHD - aktuelle Version V3.2.2 hier, neu: FAQ hier
    • Hatte ich vorher schon getestet, aber vergessen anzuhängen...

      Aber egal, was ich eintippe: python, python2, python2.7, es wird mir immer angezeigt "Python 2.7.11"
      Images
      • python.JPG

        18.86 kB, 1,066×76, viewed 11 times
      • python2.JPG

        22 kB, 658×102, viewed 13 times
      Yamp - gepimte Version auch für FHD - aktuelle Version V3.2.2 hier, neu: FAQ hier

      The post was edited 1 time, last by AlfredENeumann ().

    • ok, dann ist nur noch python2.7 auf der box und

      python bzw. python2 sind vermuntlich nur symlinks auf python2.7

      müsste man so sehen können

      ls -al /usr/bin/python*


      wg. dem Error: ich vermute, dass hier die libraries nicht geladen werden
      ein einfaches python script lässt über Enigma2 nicht einfach so starten
      ich vermute, dass du noch die entsprechenden Engma2 componenten / module importieren musst, damit das funktioniert

      da endet mein python 1/100stel Wissen aber schon

      der vollständige code des plugins hilft da sicher weiter, eine leere __init__.py hast du erstellt?
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox
    • mit den symlinks hast du wohl recht.
      Und doch, die libraries sind geladen - sonst würde er ja meckern, dass eine Funktion nicht geladen werden kann. Er meckert aber den Rückgabewert der Funktion an!
      Bei Bedarf kann ich aber gern auch noch das Plugin anhängen - steht eh nix grossartiges drin, weil es nur mein "Test-Plugin" ist, mit dem ich bei Bedarf irgendwelche neue Dinge teste. In dem Fall eben nur das.
      Images
      • pythonls.JPG

        45.53 kB, 794×165, viewed 16 times
      Yamp - gepimte Version auch für FHD - aktuelle Version V3.2.2 hier, neu: FAQ hier
    • Source Code

      1. import requests
      2. resp = requests.get('https://api.github.com')
      3. if resp.status_code == 200:
      4. resp_string = resp.text
      if resp.status_code muss du nicht verwenden, es reicht auch das resp.text dann erhaltest du einen String, den du dann weiter verarbeiten kannst.
      So nutze ich es auch im Emby Plugin.

      Vielleicht ist es das, was du im Plugin nutzen kannst.
      LG Murxer
    • Hi @murxer,
      auch dir danke ich. Nur - es hilft mir leider nichts, denn bis zu einer Auswertung komme ich ja gar nicht. Wie oben schon geschrieben, bekomme ich schon bei Aufruf von requests einen Grünen. Und wenn ichs in ein try-except-Konstrukt einbaue, erhalte ich
      Jan 18 22:17:30 dm920 enigma2[27257]: __str__ returned non-string (type Error)

      Und, auch wie gesagt, in der shell funktioniert alles....
      Yamp - gepimte Version auch für FHD - aktuelle Version V3.2.2 hier, neu: FAQ hier
    • unglaublich, aber wahr: so gehts bei mir auch :freu:
      Rein aus Neugierde: Hast du jetzt auch noch eine Erklärung, warums ohne die zusätzlichen Parameter zwar in der shell funzt, aber nicht im Plugin?
      Danke dir auf jeden Fall sackrisch !!! :thumbsup: :saufen:

      Und (auch wenns hier nicht hingehört): noch eine Idee, wie ich das auch auf meinen 7020HD schaffe (OE2.0)? Da erhalte ich als Antwort:
      Display Spoiler

      File "<stdin>", line 1, in <module>
      File "/usr/lib/python2.7/site-packages/requests/api.py", line 70, in get
      return request('get', url, params=params, **kwargs)
      File "/usr/lib/python2.7/site-packages/requests/api.py", line 56, in request
      return session.request(method=method, url=url, **kwargs)
      File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 475, in request
      resp = self.send(prep, **send_kwargs)
      File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 596, in send
      r = adapter.send(request, **kwargs)
      File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 497, in send
      raise SSLError(e, request=request)
      requests.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.
      Yamp - gepimte Version auch für FHD - aktuelle Version V3.2.2 hier, neu: FAQ hier
    • Klugscheissermodus ein ;) : mit apt unter OE2.0 schonmal gar nicht. ;)
      Und ja, libssl und auch alles sonstigen verfügbaren Module mit ssl (sind unter OE2.0 allerdings nicht viele) sind installiert.
      Yamp - gepimte Version auch für FHD - aktuelle Version V3.2.2 hier, neu: FAQ hier
    • Versuch das mal wenn du das im code hinzufügst.

      Source Code

      1. from twisted.internet import ssl
      2. try:
      3. _create_unverified_https_context = ssl._create_unverified_context
      4. except AttributeError:
      5. # Legacy Python that doesn't verify HTTPS certificates by default
      6. pass
      7. else:
      8. # Handle target environment that doesn't support HTTPS verification
      9. ssl._create_default_https_context = _create_unverified_https_context
      Sollte das beheben bei OE 2.0
      LG Murxer
    • Auch dir wieder danke, haut aber nicht hin. Ergebnis im plugin: genau wie vorher. Ergebnis in der shell:
      Display Spoiler

      ssl._create_default_https_context = _create_unverified_https_context
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      NameError: name '_create_unverified_https_context' is not defined
      import ssl wird ohne Problem ausgeführt.
      Noch eine Idee?
      Yamp - gepimte Version auch für FHD - aktuelle Version V3.2.2 hier, neu: FAQ hier
    • kein Thema - steht eh nix drin, ist nur und ausschliesslich der Test....

      Update: Jetzt hab ichs nochmal auf meiner 2. 7020 versucht; geht zwar auch nicht, aber die Meldung ist anders (sh. screenshot). Die Meldung in der shell ist aber gleich:
      Display Spoiler

      >>> ssl._create_default_https_context = _create_unverified_https_context
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      NameError: name '_create_unverified_https_context' is not defined
      Images
      • RequestBox2.JPG

        19.94 kB, 709×112, viewed 13 times
      Files
      • TestPlugin.zip

        (187.59 kB, downloaded 14 times, last: )
      Yamp - gepimte Version auch für FHD - aktuelle Version V3.2.2 hier, neu: FAQ hier

      The post was edited 2 times, last by AlfredENeumann ().