Hallo python-forum.de-Community!
Zunächst einmal möchte ich mich kurz vorstellen, ich heiße L3viathan2142, bin 17 Jahre alt und Schüler. Ich programmiere, seit ich 12 bin, allerdings nie mit Python: Begonnen habe ich mit C++, bin dort allerdings nicht weit gekommen, habe dann HTML, Javascript, VBS, CSS, PHP, ein bisschen VB und Java gelernt. Die letzten ein bis zwei Jahre habe ich mich hauptsächlich mit der Windows-only Scriptsprache AutoIt beschäftigt, ich bin aktives Mitglied des AutoIt.de-Forums.
Vor einiger Zeit kam mir die Idee, ein Internet-bündelndes Tool zu schreiben, welches mir Facebook- und Twitterstatusupdates sowie per IMAP neue Mails anzeigt, möglicherweise erweiterbar mit anderen Portalen.
Ich habe das zunächst mit AutoIt versucht, mir dazu cURL heruntergeladen, jedoch habe ich keine vernünftige Downloadquelle für curl inkl. dlls gefunden.
Also habe ich in der Twitterdokumentation nach Bibliotheken gesucht und python-twitter gefunden.
Mittlerweile habe ich schon mit Hilfe des Tutorials ein Statusupdate hingekriegt.
Fragen:
Ist Python die richtige Sprache für sowas? Vorteile sehe ich in der Platformunabhängigkeit. Nachteil für mich ist natürlich, dass ich mit Python nicht vertraut bin, außerdem ist mir Platformunabhängigkeit momentan eh nicht so wichtig.
Besteht die Möglichkeit, eine Python-App als exe zu verpacken? Besonders diese Funktion gefällt mir bei Autoit. Ansonsten müsste ich ja benötigte Bibliotheken bei einem Setup mitinstallieren lassen...
Bemerkungen: Ich habe Boardsuche sowie Google benutzt, habe aber fast nichts brauchbares gefunden. Außerdem präferiere ich menschliche Hilfe, wenn möglich.
Fehlen noch weitere Fakten? Habt ihr Fragen? Bitte fragt.
Gruß, L3viathan2142
Twitter/Facebook/...-client - mit Python?
- L3viathan2142
- User
- Beiträge: 8
- Registriert: Montag 27. Juli 2009, 01:53
Zuletzt geändert von L3viathan2142 am Montag 27. Juli 2009, 14:49, insgesamt 2-mal geändert.
Python eignet sich primaL3viathan2142 hat geschrieben:Hallo python-forum.de-Community!
Zunächst einmal möchte ich mich kurz vorstellen, ich heiße L3viathan2142, bin 17 Jahre alt und Schüler. Ich programmiere, seit ich 12 bin, allerdings nie mit Python: Begonnen habe ich mit C++, bin dort allerdings nicht weit gekommen, habe dann HTML, Javascript, VBS, CSS, PHP, ein bisschen VB und Java gelernt. Die letzten ein bis zwei Jahre habe ich mich hauptsächlich mit der Windows-only Scriptsprache AutoIt beschäftigt, ich bin aktives Mitglied des AutoIt.de-Forums.
Vor einiger Zeit kam mir die Idee, ein Internet-bündelndes Tool zu schreiben, welches mir Facebook- und Twitterstatusupdates sowie per IMAP neue Mails anzeigt, möglicherweise erweiterbar mit anderen Portalen.
Ich habe das zunächst mit AutoIt versucht, mir dazu cURL heruntergeladen, jedoch habe ich keine vernünftige Downloadquelle für curl inkl. dlls gefunden.
Also habe ich in der Twitterdokumentation nach Bibliotheken gesucht und python-twitter gefunden.
Mittlerweile habe ich schon mit Hilfe des Tutorials ein Statusupdate hingekriegt.
Fragen:
Ist Python die richtige Sprache für sowas? Vorteile sehe ich in der Platformunabhängigkeit. Nachteil für mich ist natürlich, dass ich mit Python nicht vertraut bin, außerdem ist mir Platformunabhängigkeit momentan eh nicht so wichtig.

Code: Alles auswählen
import urllib
message = "Hello Twitter!"
data = urllib.urlencode({"status" : message})
res = urllib.urlopen(
"http://%s:%s@twitter.com/statuses/update.xml" %
(username,password), data)
http://www.py2exe.org/L3viathan2142 hat geschrieben:Besteht die Möglichkeit, eine Python-App als exe zu verpacken? Besonders diese Funktion gefällt mir bei Autoit. Ansonsten müsste ich ja benötigte Bibliotheken bei einem Setup mitinstallieren lassen...
http://www.python-forum.de/post-132369.html#132369
L3viathan2142 hat geschrieben:Bemerkungen: Ich habe Boardsuche sowie Google benutzt, habe aber fast nichts brauchbares gefunden. Außerdem präferiere ich menschliche Hilfe, wenn möglich.
Fehlen noch weitere Fakten? Habt ihr Fragen? Bitte fragt.
Gruß, L3viathan2142
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Dann sollte man aber auch nicht unerwaehnt lassen, dass sich Python-Programme auch gut unveraendert verteilen lassen, sofern es pure-Python ist, d.h. kein C enthaelt, denn da macht Windows Probleme, da die meisten Rechner noch nie einen Compiler gesehen haben.snafu hat geschrieben:Nicht unerwähnt bleiben sollte auch der [wiki=PyInstaller - Windows Programme unter Linux kompilieren]PyInstaller[/wiki], den ich persönlich sogar lieber als py2exe mag.
Das ganze natuerlich unter der Vorraussetzung, dass Python installiert ist. Warum ich das erwaehne ist, dass ``py2exe`` und ``pyinstaller`` den Interpreter selbst mitliefern und so bei mehreren Programmen doch grosse Mengen an Speicher umsonst verbraten werden.
Eine Alternative waere vielleicht auch IronPython, da .net ja durchaus verbreitet ist auf Windows Maschinen, allerdings hab ich mich damit noch nicht beschaeftigt.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Was aber wieder zur müßigen Diskussion führt, ob Windows-Normal-User sich überzeugen lassen, ein extra Programm zu installieren (Python), weil das grundsätzlich sinnvoller wäre. Am besten wäre wohl ein Installer, der prüft, ob Python vorhanden ist bzw. ob die mindestens nötige Version installiert ist und ggf. Python nachlädt.
Windows-User (nicht alle) drücken ja gerne auf "OK" und "Weiter". Wenn da etwas zusätzliches installiert wird, ist es egal. Sie haben nur meistens keine Lust, selber auf die Python-Seite zu gehen und sich um Download + Installation zu kümmern. Eigentlich auch verständlich: Ich möchte als Anwender ein fertiges Programm nutzen und mich nicht erst um die Voraussetzungen kümmern. Wenn das OS keine Paketverwaltung mitbringt, müssen das eben die Programme erledigen.
Gibt es so eine Art von speziellem Python-Installer eigentlich schon? Wäre doch ansonsten ne prima Idee für ein Projekt. Sollte man dann halt nur nicht in Python schreiben, weil es recht unlogisch ist, das zu überprüfende bereits vorauszusetzen.
Den Kompromiss, dass der Installer auch ein paar Kilobyte benötigt, kann man IMHO eingehen.
Windows-User (nicht alle) drücken ja gerne auf "OK" und "Weiter". Wenn da etwas zusätzliches installiert wird, ist es egal. Sie haben nur meistens keine Lust, selber auf die Python-Seite zu gehen und sich um Download + Installation zu kümmern. Eigentlich auch verständlich: Ich möchte als Anwender ein fertiges Programm nutzen und mich nicht erst um die Voraussetzungen kümmern. Wenn das OS keine Paketverwaltung mitbringt, müssen das eben die Programme erledigen.
Gibt es so eine Art von speziellem Python-Installer eigentlich schon? Wäre doch ansonsten ne prima Idee für ein Projekt. Sollte man dann halt nur nicht in Python schreiben, weil es recht unlogisch ist, das zu überprüfende bereits vorauszusetzen.

-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das muss nicht diskutiert werden, denn Windows-Normal-User lassen sich überzeugen, wie die Visual Basic Runtimes und das .NET Framework demonstriert haben.snafu hat geschrieben:Was aber wieder zur müßigen Diskussion führt, ob Windows-Normal-User sich überzeugen lassen, ein extra Programm zu installieren (Python), weil das grundsätzlich sinnvoller wäre.
Für so einen Installer brauchts nur ein kleines C-File, dass Python runterlädt und den MSI-Installer im "unattended"-Modus startet.
@L3viathan2142: Platformunabhängigkeit ist insofern wichtig, wenn man Feedback von erfahreneren Leuten haben will. Die nutzen zumindest in der Python-Welt eher seltener Windows und haben daher idR wenig Lust das System zu starten nur um irgendwelche Fragen zu beantworten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ja, an C dachte ich auch. Ich fragte nur, ob es das schon gibt, weil ich im Moment dabei bin, mir C ein bißchen beizubringen und schon Bock hätte, sowas zu programmieren, sofern ich denn das Rad nicht neu erfinde...Leonidas hat geschrieben:Für so einen Installer brauchts nur ein kleines C-File, dass Python runterlädt und den MSI-Installer im "unattended"-Modus startet.
- L3viathan2142
- User
- Beiträge: 8
- Registriert: Montag 27. Juli 2009, 01:53
Vielen Dank für die Antworten!
Ich habe momentan noch ein Problem mit GUIs, ich kriege es zwar hin, mittels Tkinter eine GUI zum Laufen zu bringen, jedoch ist mir das viel zu ungenau. Kann man Ctrls auch Pixelgenau positionieren? Ich habe das bis jeztz mit .grid oder .pack gemacht...
Den Python-Installer kann ich mal schnell mit AutoIt machen, dafür ist AutoIt ja gemacht, sagt schon der Name...
Ich habe momentan noch ein Problem mit GUIs, ich kriege es zwar hin, mittels Tkinter eine GUI zum Laufen zu bringen, jedoch ist mir das viel zu ungenau. Kann man Ctrls auch Pixelgenau positionieren? Ich habe das bis jeztz mit .grid oder .pack gemacht...
Den Python-Installer kann ich mal schnell mit AutoIt machen, dafür ist AutoIt ja gemacht, sagt schon der Name...

-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nicht dass ich wüsste. Bei C muss man halt schauen, wie man die richtige Datei runtergeladen bekommt, also ggf. libcurl, libfetch, libneon oder libwww statisch linken. Nicht schön, aber immerhin.snafu hat geschrieben:Ja, an C dachte ich auch. Ich fragte nur, ob es das schon gibt, weil ich im Moment dabei bin, mir C ein bißchen beizubringen und schon Bock hätte, sowas zu programmieren, sofern ich denn das Rad nicht neu erfinde...
@L3viathan2142: Ja genau das sollte man eben nicht machen. Pixelgenaue Positionierung bringt so viele Probleme mit sich, dass man sich das am besten verkneift.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- L3viathan2142
- User
- Beiträge: 8
- Registriert: Montag 27. Juli 2009, 01:53
Ich habe damit noch nie Probleme gehabt. So ist alles zu ungenau! Gibt es denn eine Möglichkeit der Pixelgenauen Positionierung?
edit: Habe das Programm zum Python-Download + Installation fertig.
edit:Recht hat er, wird angepasst...
edit: Habe das Programm zum Python-Download + Installation fertig.
edit:Recht hat er, wird angepasst...
Zuletzt geändert von L3viathan2142 am Montag 27. Juli 2009, 13:37, insgesamt 1-mal geändert.
@Leonidas:
Man wird wohl auch MSDN-Bibliothek statisch linken müssen, sofern man mittels Registry auf eine Python-Installation prüfen will. Oder gibt es für die Registry speziellere - und somit auch kleinere - Bibliotheken?
Man wird wohl auch MSDN-Bibliothek statisch linken müssen, sofern man mittels Registry auf eine Python-Installation prüfen will. Oder gibt es für die Registry speziellere - und somit auch kleinere - Bibliotheken?
@L3viathan2142:
Und wo ist die Prüfung auf eine vorhandene Installation? Außerdem ist das nicht XP-tauglich. Zudem muss etwas eingebaut werden, mit dem sich die Mindestabhängigkeit festlegen lässt. Insbesondere weil der Sprung auf die 3er-Serie noch lange nicht von allen Programmen gemacht wurde. Also man müsste ">=2.6, aber <3.0" ausdrücken können.
Und wo ist die Prüfung auf eine vorhandene Installation? Außerdem ist das nicht XP-tauglich. Zudem muss etwas eingebaut werden, mit dem sich die Mindestabhängigkeit festlegen lässt. Insbesondere weil der Sprung auf die 3er-Serie noch lange nicht von allen Programmen gemacht wurde. Also man müsste ">=2.6, aber <3.0" ausdrücken können.
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Lass nur mal den Benutzer eine andere Schriftart fuer sein System einstellen, und schon passt alles nicht mehr. Die Diskussion hatten wir doch schonmal irgendwo...L3viathan2142 hat geschrieben:Ich habe damit noch nie Probleme gehabt.
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
- L3viathan2142
- User
- Beiträge: 8
- Registriert: Montag 27. Juli 2009, 01:53
Alles klar, wird gemacht.. aber wie meinst du das mit dem letzten Satz?
Es soll installiert werden, wenn nicht mindestens Version 2.6 installiert ist?
Das ist nicht ganz einfach, die Registry erlaubt ja kein Auflisten der Keys...
HKLM\Software\Python\PythonCore\2.6 gibt es zum Beispiel, wenn man Version 2.6 hat.
Es gibt aber keinen Schlüssel wie zum Beispiel HKLM\SOFTWARE\Python\PythonCore
Version="2.6"
, oder ähnliches...
Dann muss ich sozusagen auf jede Version einzeln überprüfen...
Es soll installiert werden, wenn nicht mindestens Version 2.6 installiert ist?
Das ist nicht ganz einfach, die Registry erlaubt ja kein Auflisten der Keys...
HKLM\Software\Python\PythonCore\2.6 gibt es zum Beispiel, wenn man Version 2.6 hat.
Es gibt aber keinen Schlüssel wie zum Beispiel HKLM\SOFTWARE\Python\PythonCore
Version="2.6"
, oder ähnliches...
Dann muss ich sozusagen auf jede Version einzeln überprüfen...

-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hmm? So ziemlich jedes Programm nutzt Sizer/Layout Manager (von VB6-Programmen abgesehen, aber die sehen immer schlecht aus, egal was) und du wirst doch jetzt nicht behaupten dass die alle zu ungenau sind?L3viathan2142 hat geschrieben:Ich habe damit noch nie Probleme gehabt. So ist alles zu ungenau!
Jemand hat auch mal ein hübsches Beispiel gepostet: Mit Layout Manager vs. pixelgenaue Positionierung.
@snafu: Du meinst sicher WinAPI.. wenn man dadrauf Zugriff braucht dann wird man wohl auch irgendwo dagegen linken müssen. Ab hier wird das dann langsam hässlich.
@L3viathan2142: Natürlich unterstützt Windows das Auflisten von Keys, wie würde denn sonst sowas wie Regedit funktionieren? In Python geht das über ``_winreg.EnumKey``.
Zuletzt geändert von Leonidas am Montag 27. Juli 2009, 13:51, insgesamt 2-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Nein. Der Ausdruck bedeutet, dass das Programm Python 2.6 oder besser fordert (dazu gehört auch 2.6.1 usw), aber die Major-Versionsnummer muss tiefer als 3 sein. War natürlich nur ein Beispiel.L3viathan2142 hat geschrieben:Alles klar, wird gemacht.. aber wie meinst du das mit dem letzten Satz?
Es soll installiert werden, wenn nicht mindestens Version 2.6 installiert ist?
Man muss sich halt den Namen des Unterschlüssels von `PythonCore` angucken und mit dem geforderten Versionsstring vergleichen. Vielleicht sollte man das auch getrennt entgegen nehmen:L3viathan2142 hat geschrieben:Das ist nicht ganz einfach, die Registry erlaubt ja kein Auflisten der Keys...
HKLM\Software\Python\PythonCore\2.6 gibt es zum Beispiel, wenn man Version 2.6 hat.
Es gibt aber keinen Schlüssel wie zum Beispiel HKLM\SOFTWARE\Python\PythonCore
Version="2.6"
, oder ähnliches...
Code: Alles auswählen
check_version(major, minor, micro)
- L3viathan2142
- User
- Beiträge: 8
- Registriert: Montag 27. Juli 2009, 01:53
Das Problem ist: Es gibt afaik aus Sicherheitsgründen keine Möglichkeit, die Unterschlüssel eines Schlüssels aufzulisten.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wie ich schon gesagt habe: das stimmt nicht. Zumindest nicht in C oder Python. Vielleicht stimmt es ja in AutoIt.L3viathan2142 hat geschrieben:Das Problem ist: Es gibt afaik aus Sicherheitsgründen keine Möglichkeit, die Unterschlüssel eines Schlüssels aufzulisten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Übrigens unglaublich sinnvoll, für dieses Problem eine weitere Skriptsprache zu fordern... Letztlich wird man das wohl in C oder C++ vorkompiliert ausliefern müssen. Wobei, wenn echt noch gegen zusätzliche Libs gelinkt werden muss, dann kann man sich das Ganze auch sparen, weil es dann am Ende womöglich größer als der Interpreter wird. Vielleicht ist auch *das* der Grund, warum es so ein Programm nicht gibt.
- L3viathan2142
- User
- Beiträge: 8
- Registriert: Montag 27. Juli 2009, 01:53
Ich erinnere mich, das mal im Zusammenhang mit dem WSH gelesen zu haben, dann triffts wohl nur auf den zu.
Mea culpa.
Bez. Kritik wegen weiterer Skriptsprache: Wenn man das Skript kompiliert, kriegt man davon ja garnichts mit, AutoIt ist auch ziemlich schnell.. Ihr müsst es ja auch nicht nutzen, es geht ja um ein Projekt von mir.
Bez. Layoutmanager vs Pixelgenau: Mal sehen, vlt. muss ich mich einfach umgewöhnen, besonders, wenns um Platformunabhängigkeit geht. Ich hab ja auch noch nicht viel damit gemacht.
hier der neue Link: http://rapidshare.com/files/260598597/pyload.exe
hier wieder der Code, nur falls jemanden interessiert..
Mea culpa.
Bez. Kritik wegen weiterer Skriptsprache: Wenn man das Skript kompiliert, kriegt man davon ja garnichts mit, AutoIt ist auch ziemlich schnell.. Ihr müsst es ja auch nicht nutzen, es geht ja um ein Projekt von mir.
Bez. Layoutmanager vs Pixelgenau: Mal sehen, vlt. muss ich mich einfach umgewöhnen, besonders, wenns um Platformunabhängigkeit geht. Ich hab ja auch noch nicht viel damit gemacht.
hier der neue Link: http://rapidshare.com/files/260598597/pyload.exe
hier wieder der Code, nur falls jemanden interessiert..
Code: Alles auswählen
;Check:
$read=RegEnumKey("HKLM\SOFTWARE\Python\PythonCore",1)
If @error Or Number($read) < 2.6 Then
;Download und Installation:
$size=InetGetSize("http://www.python.org/ftp/python/3.1/python-3.1.msi")
InetGet("http://www.python.org/ftp/python/3.1/python-3.1.msi",@ScriptDir & "/python.msi",1,1)
ProgressOn("Downloading Python","0%","0/"&Round($size/1024,1)&"KB")
While @InetGetActive
ProgressSet(Round(100*(@InetgetBytesRead/$size)),Round(@InetGetBytesRead/1024,1) & "/" & Round($size/1024,1) & "KB",Round(100*(@InetgetBytesRead/$size),1) & "%")
Sleep(100)
WEnd
ProgressOff()
ProgressOn("Installing Python","Installing....","")
$PID=Run("msiexec /i python.msi /quiet /qn /norestart")
While ProcessExists($PID)
For $i=0 To 100
Sleep(20)
ProgressSet($i)
Next
WEnd
EndIf