Zeig' mal bitte aus dem Skript _alle_ import Statements, die am Anfang deines Skripts stehen.
Gruß, noisefloor
Zeig' mal bitte aus dem Skript _alle_ import Statements, die am Anfang deines Skripts stehen.
Gruß, noisefloor
Schau mal ob du hier fündig wirst!
import logging
import os
import time as pytime
import schedule
import subprocess
from newsapi import NewsApiClient
from pytube import YouTube
from telegram.ext import Updater, CommandHandler, ConversationHandler, MessageHandler, Filters
from datetime import time as datetime_time
from telegram import ParseMode
Die Schritte sind: venv anlegen, rein wechseln, aktivieren, im venv via pip die benötigten Module installieren, Python-Programm rein kopieren, laufen lassen, glücklich sein.
Das sollte so funktionieren, alles im Terminal ausführen:
cd ~
python3 -m venv telegram_venv
cd telegram_venv
source bin/activate
pip3 install newsapi
pip3 install pytube
pip3 install python-telegram
Bei Telegram Client musst du mal checken, ob das der ist, den du verwendest.
Und dann natürlich noch dein Programm rein kopieren und laufen lassen.
Die Zeile from datetime import time as datetime_time ist extrem schräg. Du importierst explizit nur time aus datetime, nennst es aber datetime_time. Das ist verwirrend.
Gruß, noisefloor
Es ist wirklich frustrierend, ich komme mir langsam echt dämlich vor.
Die von dir genannten Module konnte ich alle installieren, die anderen verlinkten leider nicht. Ich weiß auch nicht wieso ich manche per Befehl installieren muss (wie du es geschrieben hast) und manche per sudo Befehl. Ich bin mittlerweile bei den vielen Befehlen einfach nur noch durcheinander.
Was meinst du mit "per sudo"? sudo brauchst du nur, wenn du via apt über die Paketverwaltung systemweit installierst. pip pro Benutzer im venv.
sudo hat auch nichts mit Python zu tun, sondern was mit dem Rechte-Konzept von Linux. Das ist halt anders umgesetzt als unter Windows.
Gruß, noisefloor
Vieles ist von Haus aus schon installiert und muss nicht nochmals installiert werden.
Der Rest lässt sich schlecht in wenige Worte fassen...
apt ist der Paketmanager für Installationen ins Linux-System, deshalb braucht man root-Rechte und verwendet dafür sudo davor. Manchmal installiert man damit auch Pythonmodule systemweit, aber das ist eher die Ausnahme. Systemweit bedeutet für alle User auf dem System.
Wie ich weiter oben bereits schrieb, werden Module für Python eher mit pip installiert. Verwendet man sudo davor (was man nicht machen sollte), dann werden diese Module auch systemweit installiert statt ohne sudo davor nur für den User lianus, mit dem Du unterwegs bist.
Ein venv geht noch einen Schritt weiter, was die Systemsicherheit angeht. Hier wird im Bereich des Users eine virtuelle Umgebung geschaffen, die man einfach koplett löschen könnte, ohne das man weder das System, noch die Umgebung des Users zerstören würde. Das ganze Theater ist nur dazu da nicht versehentlich oder absichtlich sein System zu zerstören.
Von unsicheren zu sicheren Python-(Modul-(Installationen)) ist: sudo verwenden > als User > venv
//Edit
Bin wieder zu spät und dann noch als halben Roman verfasst.
Danke für die Erklärungen. Das Problem, dass ich gerade habe ist, dass er mir sagt dass die Paketquellen nicht korrekt sind. Ich hab genau die Namen verwendet, die im Skript hinterlegt sind.
Linux-Distributionen nutzen oft auch Python-Systemtools, bieten einen vorinstallierten Python-Interpreter an und um Katastrophen zu verhindern, wird das Installieren von Python-Paketen außerhalb einer virtuellen Umgebung (venv) unterbunden.
Ansonsten besteht die Möglichkeit, durch die Installation falscher Pakete sein System durcheinanderzubringen.
Das ist erst kürzlich eingeführt worden und davor konnte man einfach als User Python-Pakete installieren, dass aber immer wieder zu Problemen geführt hat.
Noch viel schlimmer ist es pip mit sudo zu verwenden. Dann fängt man an, Python-Pakete systemweit zu installieren, die nicht durch die Distribution aktualisiert werden.
Wer so arbeitet, hat am Ende ein Durcheinander.
Langsam kommt Licht ins dunkle. Verstehe wofür das mit venv eingeführt wurde, macht auch alles sinn. Ich muss mich morgen nochmal genauer einlesen und schauen was ich mache. Find es so sehr umständlich muss ich sagen.
Das Problem, dass ich gerade habe ist, dass er mir sagt dass die Paketquellen nicht korrekt sind.
Welche genau meinst Du? Der Name, der im import steht ist nicht immer zwangsläufig der Name des Moduls, falls Du das meinst.
Welche genau meinst Du? Der Name, der im import steht ist nicht immer zwangsläufig der Name des Moduls, fassl Du das meinst.
Bspw. import os hat mir Probleme gemacht. Schedule ebenfalls.
In welcher Form? Wurde gemeckert, dass diese Module nicht verhanden sind oder gibt es andere Probleme?
Was sind die Fehlermeldungen?
Modul nicht gefunden stand da. Muss das gerade leider aus dem Gedächtnis rekonstruieren, kann da leider gerade nicht ran.
Dann hast Du --system-site-packages, wie noisi im Beitrag #39 schrieb übersehen, bzw. war das auch in dem Moment zu viel Info für Dich. Wobei os eigentlich ein Standardmodul und immer verfügbar sein sollte.
Bei schedule ist das schon etwas anderes. Das kannst Du aber auch noch mit pip3 install schedule im venv installieren, wie die anderen Module auch..
Hallo,
bitte _immer_ die Fehlermeldung - und zwar die komplette, nicht nur die letzte Zeile! - hier rein kopieren.
Das Thema "funktioniert nicht -> ist keine brauchbare Fehlerbeschreibung" hatten wir schon.
Gruß, noisefloor