Seite 1 von 1
Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Dienstag 6. Februar 2018, 12:28
von say_hello
Moin Python-Experten,
ein kleines Skrip, das BeautifulSoup u. requests verwendet macht irgendwie Schwierigkeiten:
zunächst bekomme ich folgende Fehlermeldung:
Code: Alles auswählen
martin@linux-3645:~/dev/python> python w1.py
Traceback (most recent call last):
File "w1.py", line 1, in <module>
import requests
ImportError: No module named requests
Dann reagiere ich natürlich
Requests ist kein built in module, also werde ich das noch installieren
Auf OpenSuse Linux 42.3:
geht wenn man pip installiert hat
Alternativ geht
Nun - ich bekomme folgende Meldung, die ich etwas merkwürdig finde:
Code: Alles auswählen
martin@linux-3645:~/dev/python> sudo pip install requests
Requirement already satisfied: requests in /usr/lib/python3.4/site-packages
martin@linux-3645:~/dev/python>
Hab ich jetzt etwas übersehen? Freue mich auf einen Tipp.
PS wenn ich den kpl. Code schicken muss - kein Problem.
vg say_hello
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Dienstag 6. Februar 2018, 12:30
von __deets__
Ich wette dein einfaches "python w1.py" laesst python2 laufen, aber wie du selbst zeigst ist requests fuer python3 installiert. Use the right force, Luke!
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Dienstag 6. Februar 2018, 13:28
von say_hello
hallo und guten Tag,
vielen Dank für den Hinweis. Ich werde mir das nacher nochmals genauer angucken.
Ich wette dein einfaches "python w1.py" laesst python2 laufen, aber wie du selbst zeigst ist requests fuer python3 installiert. Use the right force, Luke!
Ohhh - ich muss echt aufpassen - Py2 & Py3 - immer wieder komm ich in diese Falle rein.
Melde mich spaeter nochmals.
Danke schonmal jedenfalls
VG say
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Dienstag 6. Februar 2018, 14:41
von say_hello
moin _deets_
also ich hab nochmals nachgesehen - das ist der Code.
Hintergrund: will mal gucken wie gut ich mit BS4 einsteigen kann. Hab ein sehr praktisches Tutorial gefunden
www.pythonforbeginners.com/beautifulsoup
Da man dann und wann sich auch wo einloggen muss hab ich mal diesen Ansatz gewählt - und diese Übung - und logge mich hiermit auf meinen _eigenen_ Account ein.
M.a.W: - ist doch python 3 oder - siehe
Code: Alles auswählen
import requests
import bs4 as bs
with requests.session() as c:
link="https://gpldl.com/sign-in/" #link of the webpage to be logged in
initial=c.get(link) #passing the get request
login_data={"log":"*****","pwd":"******"} #the login data from any account on the site. Stars must be replaced with username and password
page_login=c.post(link, data=login_data) #posting the login data into the link
print(page_login) #checking status of requested page
page=c.get("https://gpldl.com/my-gpldl-account/") #requesting source code of logged in page
good_data = bs.BeautifulSoup(page.content, "lxml") #parsing it with BS4
print(good_data.title) #printing this gives the title that is got from the page when accessed from an logged-out account
Werde das heute Abend nochmals verschen nachzuvollziehen....Da stimmt etwas nicht ganz.
Melde mich wieder.
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Dienstag 6. Februar 2018, 15:03
von __deets__
Python2 vertraegt auch ein print(), und der Quellcode bestimmt nicht, welcher Interpreter hinter "python" steht. Da wird sich ja nicht erst der Code angeschaut, und dann entschieden.
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Dienstag 6. Februar 2018, 19:49
von say_hello
Moin _deets_
das leuchtet ein - also ich kann das dann halt so machen;
Voranstellen -
...wenn ich will dass das mit der ein bzw. anderen Version laufen soll!?
Bin noch nicht zu Hause an dem entsprechenden Rechner sonder noch unterwegs - werde das aber heute Abend nochmals ausprobieren.
Vielen Dank nochmals - u. viele Grüße
Say
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Dienstag 6. Februar 2018, 21:48
von say_hello
guten Abend,
Habe nachgesehen: mit dem sys.version string im sys module:
das Ergebnis:
Code: Alles auswählen
martin@linux-3645:~/dev/python> python sys.py
2.7.13 (default, Jan 03 2017, 17:41:54) [GCC]
so - nun muss ich - so glaube ich aufräumen. BZW - ggf. einfach dem System saagen dass ich das in Python 3 laufen lassen will.
Es ist OpenSuse 42.3 .- ich denke dass ich Python 3 (auch) installiert hab -
Werde mich nochmals dranmachen. VG und vielen Dank für Die Hilfe bis hierher.
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Dienstag 6. Februar 2018, 23:11
von __deets__
python3 eingeben reicht. Bitte nicht versuchen das „normale“ Python zu ersetzen. Dein System braucht das.
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Sonntag 11. Februar 2018, 00:05
von say_hello
hello und guten Abend __deets__
also ich denke dass das skript jetzt auch läuft - und das macht was es soll.
Danke nochmals!!!
viele Grüße
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Sonntag 11. Februar 2018, 08:27
von snafu
say_hello hat geschrieben:Habe nachgesehen: mit dem sys.version string im sys module:
Ein einfaches
python --version auf der Kommandozeile hätte übrigens auch gereicht, um an die Interpreter-Version zu kommen.
Und wenn du sichergehen willst, dass pip den "richtigen" Interpreter verwendet, dann nutze
python -m pip install modulname. Hierdurch würdest du das Modul für das Kommando
python installieren. Genau so ginge es natürlich auch mit dem Kommando
python3.
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Sonntag 11. Februar 2018, 13:18
von say_hello
hallo und guten Tag snafu
vielen Dank für den Tipp.
Nach all den Korrekturen - bekomme ich jetzt immer noch kleine Feher zurückgemeldet...
Code: Alles auswählen
import requests
import bs4 as bs
with requests.session() as c:
link="https://gpldl.com/sign-in/" #link of the webpage to be logged in
initial=c.get(link) #passing the get request
login_data={"log":"foobar","pwd":"7828Xdyb$3)"} #the login data from any account on the site. Stars must be replaced with username and password
"rememberme":"forever",
"redirect_to":"https://gpldl.com/my-gpldl-account/",
"redirect_to_automatic": "1"
}
page_login = c.post('https://gpldl.com/wp-login.php', data=login_data)
good_data = bs.BeautifulSoup(page.content, "lxml") #parsing it with BS4
print(good_data.title) #printing this gives the title that is got from the page when accessed from an logged-out account
ergibt dann das hier ... - offensichtlich ein formaler Fehler :
Code: Alles auswählen
martin@linux-3645:~/dev/python> python3 w5.py
File "w5.py", line 7
"rememberme":"forever",
^
SyntaxError: invalid syntax
martin@linux-3645:~/dev/python>
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Sonntag 11. Februar 2018, 13:20
von __deets__
Da fehlt ein Komma in der Zeile davor.
Re: Installation eines Moduls Requirement already satisfied - und dennoch errors
Verfasst: Sonntag 11. Februar 2018, 13:27
von snafu
Formatiere deinen Code mal besser, dann blickt man da leichter durch. Zum einen kann man ruhig Leerzeichen benutzen, z.B. vor und nach dem Gleichheitszeichen bei einer Zuweisung. Zum anderen lässt sich Code speziell für Python formatieren. Dazu musst du hier direkt über dem Textfeld für den Beitrag auf "Code auswählen" klicken und dann Python nehmen.
Zu deinem Problem: Du schließt dein Dict login_data direkt in der selben Zeile mit einer geschweiften Klammer ab. Danach fügst du aber noch weitere Einträge dazu. Das funktioniert so nicht. Die schließende geschweifte Klammer muss ganz zum Schluss kommen, wenn alle Einträge festgelegt wurden.