Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fehlermeldung bei pip #2

Closed
ghost opened this issue Jun 25, 2022 · 10 comments
Closed

Fehlermeldung bei pip #2

ghost opened this issue Jun 25, 2022 · 10 comments
Labels
question Further information is requested

Comments

@ghost
Copy link

ghost commented Jun 25, 2022

Hallo,
ich habe Python 3.8.0 auf dem Raspi und bekomme u.a. Meldung bei pip install xonox. Any ideas?

pi@raspberry:~ $ python -V
Python 3.8.0
pi@raspberry:~ $ pip install xonox
Collecting xonox
Could not find a version that satisfies the requirement xonox (from versions: )
No matching distribution found for xonox

@lmigula
Copy link
Contributor

lmigula commented Jun 25, 2022

Klappt es besser, wenn du pip3 install xonox zur Installation nutzt?

@ghost
Copy link
Author

ghost commented Jun 25, 2022

Nein, gleiche Meldung

@ghost
Copy link
Author

ghost commented Jun 25, 2022

Das geht:
sudo pip3.8 install xonox
oder
sudo pip3.8 install xonox -v
für verbose mode

python -m xonox liefert dann Folgendes:

  • Serving Flask app 'xonox.server' (lazy loading)
  • Environment: production
    WARNING: This is a development server. Do not use it in a production deployment.
    Use a production WSGI server instead.
  • Debug mode: off
    Permission denied

@x789
Copy link
Owner

x789 commented Jun 26, 2022

Ich vermute, dass die permission denied-Meldung durch den Versuch den Port 80 zu öffnen entsteht. Unter Linux/Unix dürfen in der Regel normale Benutzer nur Ports über 1024 öffnen. Da die iRadios jedoch Port 80 erwarten, muss xonox auf diesem laufen.
@HorstRado: Versuche mal, ob xonox läuft, wenn du das Script als superuser ausführst, also:

sudo python -m xonox

⚠️ Es kann passieren, dass dadurch zwar der Port geöffnet wird, xonox aber nicht die Konfiguration im Home-Verzeichnis speichern kann. Deshalb empfehle ich dir, den Speicherort für die Konfiguration manuell anzugeben, wenn du sudo nutzt. Um die xonox.config zum Beispiel im Verzeichnis home/pizu speichern, nutze:

sudo python -m xonox --config-dir /home/pi

Normalerweise würde ich davon abraten, einen Service als superuser auszuführen. So kannst du aber schnell feststellen, ob es an den fehlenden Berechtigungen für Port 80 lag.

@ghost
Copy link
Author

ghost commented Jun 26, 2022

Ich bin jetzt noch mal über 'Los' gegangen :-)

  • Raspi neu installiert mit der aktuellen Raspian Version

  • enthalten ist Python V3.9.2

  • pip install xonox funktioniert ohne Fehlermeldung:
    horst@raspberrypi:~ $ pip install xonox
    Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
    Requirement already satisfied: xonox in ./.local/lib/python3.9/site-packages (0.0.5)
    Requirement already satisfied: flask in /usr/lib/python3/dist-packages (from xonox) (1.1.2)

  • legacy.noxonserver.eu und gate1.noxonserver.eu sind in pi-hole (läuft auf einem anderen raspi) umgeleitet.

  • python -m xonox liefert:
    horst@raspberrypi:~ $ python -m xonox

  • Serving Flask app "xonox.server" (lazy loading)
  • Environment: production
    WARNING: This is a development server. Do not use it in a production deployment.
    Use a production WSGI server instead.
  • Debug mode: off
    Traceback (most recent call last):
    File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
    File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
    File "/home/horst/.local/lib/python3.9/site-packages/xonox/main.py", line 14, in
    server.run(args.host, args.config_dir)
    File "/home/horst/.local/lib/python3.9/site-packages/xonox/server.py", line 103, in run
    app.run(host=host, port=80)
    File "/usr/lib/python3/dist-packages/flask/app.py", line 990, in run
    run_simple(host, port, self, **options)
    File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 1052, in run_simple
    inner()
    File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 996, in inner
    srv = make_server(
    File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 847, in make_server
    return ThreadedWSGIServer(
    File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 740, in init
    HTTPServer.init(self, server_address, handler)
    File "/usr/lib/python3.9/socketserver.py", line 452, in init
    self.server_bind()
    File "/usr/lib/python3.9/http/server.py", line 138, in server_bind
    socketserver.TCPServer.server_bind(self)
    File "/usr/lib/python3.9/socketserver.py", line 466, in server_bind
    self.socket.bind(self.server_address)
    PermissionError: [Errno 13] Permission denied
  • Radio ist Noxon iRado300

P.S.

  • sudo python -m xonox liefert:
    horst@raspberrypi:~ $ sudo python -m xonox
    /usr/bin/python: No module named xonox

@x789
Copy link
Owner

x789 commented Jun 26, 2022

@HorstRado: Es freut mich, dass du noch nicht aufgegeben hast. 👍

Du hast xonox als Benutzer horst installiert. Deshalb wurde das Modul durch pip in /home/horst/.local/lib/python3.9/site-packages/xonox/ abgelegt.
Wenn du jetzt aber sudo python -m xonox ausführst, wird das ganze (wahrscheinlich) als Benutzer pi ausgeführt. Im Verzeichnis /home/pi/.local/lib/python3.9/site-packages/ wird es aber wahrscheinlich kein xonox geben.

Du hast jetzt zwei Möglichkeiten:
Du installierst für pi das Paket xonox mittels sudo pip install xonox. Dann kannst du mit sudo python -m xonox --config-dir . den Service starten. (Vielleicht deinstallierst du das Paket dann noch für den Nutzer horst mittels pip uninstall xonox.)

Oder du führst xonox als Benutzer horst, ohne sudo aus. Dazu benötigst du aber noch ein Helferlein wie authbind.
Installation:

sudo apt install authbind
# configure access to port 80
sudo touch /etc/authbind/byport/80
sudo chmod 777 /etc/authbind/byport/80

Start von xonox:

authbind --deep python -m xonox --config-dir .

@x789
Copy link
Owner

x789 commented Jun 26, 2022

@HorstRado: Falls du xonox nicht bei dir als Autostart-Service konfiguriert hast und verhindern möchtest, dass der Service nach deinem SSH-Logout beendet wird, kann dir screen weiterhelfen.

@ghost
Copy link
Author

ghost commented Jun 26, 2022

Erst mal vielen Dank für deine gute Hilfe!

Ich hab jetzt mit dem Benutzer pi folgendes gemacht:
pi@raspberrypi:~ $ sudo pip install xonox
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: xonox in /usr/local/lib/python3.9/dist-packages (0.0.5)
Requirement already satisfied: flask in /usr/lib/python3/dist-packages (from xonox) (1.1.2)

pi@raspberrypi:~ $ sudo python -m xonox

  • Serving Flask app "xonox.server" (lazy loading)
  • Environment: production
    WARNING: This is a development server. Do not use it in a production deployment.
    Use a production WSGI server instead.
  • Debug mode: off
  • Running on http://0.0.0.0:80/ (Press CTRL+C to quit)

Am Radiomenu 'Internet' angewählt gibt die noxon Konsole folgendes aus und das Radiodisplay sagt 'leer':
192.168.42.125 - - [26/Jun/2022 17:40:26] "GET /setupapp/fs/asp/BrowseXML/loginXML.asp?token=0 HTTP/1.1" 200 -
192.168.42.125 - - [26/Jun/2022 17:40:26] "GET /setupapp/fs/asp/BrowseXML/loginXML.asp?gofile=&mac=9f868345b8fa93a771e9f6bc7309e275&dlang=ger&fver=79&hw=10143&ven=Terratec HTTP/1.1" 200 -

Beim Absenden deines Beispiels:
curl --location --request POST 'http://legacy.noxonserver.eu/station'
--header 'Content-Type: application/json'
--data-raw '{
"name": "Radio Swiss Pop",
"description": "Radio Swiss Pop Live Stream",
"streamUrl": "http://stream.srg-ssr.ch/m/rsp/mp3_128"
}'

oder bei

curl --location --request GET 'http://legacy.noxonserver.eu/station'

curl: (7) Failed to connect to legacy.noxonserver.eu port 80: Connection refused

@x789
Copy link
Owner

x789 commented Jun 27, 2022

Wenn das Radiodisplay 'leer' anzeigt, ist das ein gutes Zeichen. Das zeigt, dass das Radio mit xonox sprechen kann. Bei den Beispielrequests in der Doku bin ich davon ausgegangen, dass der Rechner der den Curl-Request abschickt den gleichen DNS-Server wie die Radios nutzt. Wenn das bei dir nicht der Fall ist, dann schicke die Requests an die IP-Adresse des xonox-Services. Wenn du direkt auf dem Raspberry bist auf dem auch xonox läuft, dann könntest du auch den Request an den localhost abschicken.
Also wenn du den Request vom Raspberry ausführst:

curl --location --request POST 'http://localhost/station'
--header 'Content-Type: application/json'
--data-raw '{
"name": "Radio Swiss Pop",
"description": "Radio Swiss Pop Live Stream",
"streamUrl": "http://stream.srg-ssr.ch/m/rsp/mp3_128"
}'

Von einem anderen Computer:

curl --location --request POST 'http://xonox-ip/station'
--header 'Content-Type: application/json'
--data-raw '{
"name": "Radio Swiss Pop",
"description": "Radio Swiss Pop Live Stream",
"streamUrl": "http://stream.srg-ssr.ch/m/rsp/mp3_128"
}'

@ghost
Copy link
Author

ghost commented Jun 27, 2022

Kaum macht man es richtig und schon geht's auch.
Vielen Dank für deine geduldige Hilfe.

Autostart des xonox Servers:

sudo nano /etc/rc.local

Vor der Zeile mit exit 0
sudo python -m xonox &
einfügen

@x789 x789 closed this as completed Jun 27, 2022
@x789 x789 added the question Further information is requested label Jul 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants