Problem bei Installation eines Python Script

Probleme bei der Installation?
Antworten
deister
User
Beiträge: 8
Registriert: Samstag 7. Juli 2012, 19:33

Guten Abend @ all,

ich verzweifele gerade an einer Installation eines Python Scripts und benötige Eure Hilfe.

Bisher habe ich noch nie mit Python gearbeitet geschweige ein fertiges Script installiert.

Ok nun zum eingemachten :-)

Ich habe bisher das Script auf dem Server hochgeladen, das Framework TurboGears V1.5 installiert sowie die setup.py des Scriptes erfolgreich durchlaufen lassen sowie dabei fehlende Pakete nachinstalliert.

Soweit so gut :-)

Nun kommt das eigentliche Problem.

Bei Aufruf der start-fehapo.py bekomme ich eine Fehlermeldung wo ich nicht weiter komme:

ImportError: cannot import name session

Die Meldung vertstehe ich schon aber was machen ich falsch bzw. wo muss ich suchen um das in den Griff zu bekommen?

Oder gibt es jemanden der mir das Script fertig installiert (gegen Bezahlung) und mir eine kleine Anleitung macht wie ich vorgehen muss.

Ich danke euch schon einmal im Voraus für eure Hilfe / Tipps.

Gruß deister

P.S: mein System ist ein V-Server mit Debian 6 sowie Python 2.6
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Hallo und Willkommen im Forum!

Ohne das Script können wir schlecht sagen, woran es hapert ;-) Du solltest zudem immer die komplette Fehlermeldung posten.

Die Meldung sagt nur aus, dass ein Import dieser Art fehlschlägt:

Code: Alles auswählen

from foo import session
`foo` kennen wir hier ja noch nicht...

Generell wirst Du hier schnell zu hören bekommen, dass TG 1.5 veraltet ist, TG generell auf verlorenem Posten gegenüber der Übermacht von Django und Pyramid steht. Daher stelle ich hier schon mal die Frage, wieso es TG 1.5 sein soll oder noch profaner: Was willst Du eigentlich machen? Du scheinst ja kein Python lernen zu wollen, sondern "nur" eine spezielle Web-App zum Laufen bringen, richtig? Wenn ja, welche und was tut diese? Ggf. gibt es eine Alternative.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
deister
User
Beiträge: 8
Registriert: Samstag 7. Juli 2012, 19:33

Guten Abend,

wow das ging ja schnell :-)

Also das TG 1.5 war vom Entwickler des Scripts als Vorraussetzung genannt worden für die Installation des Scripts.
Leider war es das auch, also keine weitere Hilfestellung.

Code: Alles auswählen

/usr/local/lib/python2.6/dist-packages/FileFields-0.1a7.dev_r2292-py2.6.egg/file_fields/widgets/file_field.py:12: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import md5
Traceback (most recent call last):
  File "start-fehapo.py", line 15, in <module>
    start()
  File "/var/www/virtual/fehaus-fewo.de/htdocs/fehapo/command.py", line 117, in start
    from fehapo.controllers.root import (Root, get_locale_no_header)
  File "/var/www/virtual/fehaus-fewo.de/htdocs/fehapo/controllers/__init__.py", line 1, in <module>
    from fehapo.controllers.root import Root
  File "/var/www/virtual/fehaus-fewo.de/htdocs/fehapo/controllers/root.py", line 14, in <module>
    from cherrypy import (request, response, session, NotFound, config)
ImportError: cannot import name session
Hier einmal die komplette Meldung bis zum Fehler.

Richtig ich möchte nur das Script zum Laufen bringen und es nutzen.
Es ist ein Ferienhaus Portal.

Etwas Python werde ich mir dafür schon aneignen müssen soviel habe ich schon herausgefunden.

Wie schon geschrieben ich würde auch die Installation bezahlen und würde mich dann über eine Step by Step Anleitung freuen.
So kann ich das dann auch nachvollziehen.

Gruß deister
BlackJack

@deister: Welche Version von `cherrypy` ist denn installiert? Meine kennt auch kein `session`:

Code: Alles auswählen

In [59]: from cherrypy import session
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)

/home/bj/<ipython console> in <module>()

ImportError: cannot import name session

In [60]: cherrypy.__version__
Out[60]: '3.1.2'
deister
User
Beiträge: 8
Registriert: Samstag 7. Juli 2012, 19:33

Hallo,

ich nutze Version 3.2.2 von cherrypy

Gruß deister
BlackJack

In der TurboGears-Dokumentation stehen dazu ein paar Anmerkungen: http://www.turbogears.org/1.5/docs/Visit/Sessions.html

Keine Ahnung ob und was da zutrifft. Und noch weniger wie man das in Deinem speziellen Fall beheben kann.
deister
User
Beiträge: 8
Registriert: Samstag 7. Juli 2012, 19:33

Hallo,

ja dort habe ich auch schon gestöbert :-)
Leider bringt mich das nicht wirklich weiter.

Gruß deister
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich habe mal nach "cottage" in Kombination mit Django gesucht - tatsächlich finden sich einige Seiten, die Django als Unterbau nutzen, aber ich habe kein freies Modul dafür gefunden. Insofern kann ich Dir jetzt leider keine Alternative bieten :-(

Also bleibt Dir wohl nur noch eigene Alternativsuche oder das "Durchwuseln" durch die benötigten Versionen der Module...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
deister
User
Beiträge: 8
Registriert: Samstag 7. Juli 2012, 19:33

Hallo,

ok danke erstmal für eure Hinweise und Tipps auch wenn mich dies nicht wirklich weiter bringt.
Sollte sich jemand finden der mir das Script installieren würde (gegen Bezahlung) dann bitte einfach eine PN an mich.

Nun wünsche ich allen noch einen schönen Sonntag,
Gruß deister
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Vorweg: Ich habe keine Ahnung von cherrypy.

Ich hab allerdings mal gestoebert und siehe da cherrypy2.1 kennt `cherrypy.session` noch: https://bitbucket.org/cherrypy/cherrypy ... _.py#cl-91
deister
User
Beiträge: 8
Registriert: Samstag 7. Juli 2012, 19:33

Hallo,

danke für den Hinweis ich kann es ja mal mit dieser Version testen vielleicht habe ich damit Erfolg.

Einen Versuch ist es auf jeden Fall wert :-)

Gruß deister
deister
User
Beiträge: 8
Registriert: Samstag 7. Juli 2012, 19:33

Guten Abend,

ich bin nun um einiges weiter bei der Installation.
Vieles lag an der Cherrypy Version.

Nachdem ich die Version V2.3.0 verwende und noch einiges nachinstalliert habe kann ich die Seite über die IP aufrufen.

Allerdings nur mit Angabe des Ports.
Also so:

123.123.123.123:8080

Was muss ich machen um das Projekt über den Domainnamen aufzurufen.

Dann habe ich noch etwas merkwürdiges festgestellt:

Code: Alles auswählen

2012-07-15 21:40:34,559 cherrypy.msg INFO CONFIG: Server parameters:
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.environment: development
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.log_to_screen: True
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.log_file:
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.log_tracebacks: True
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.log_request_headers: True
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.protocol_version: HTTP/1.0
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.socket_host:
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.socket_port: 8080
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.socket_file:
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.reverse_dns: False
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.socket_queue_size: 5
2012-07-15 21:40:34,560 cherrypy.msg INFO CONFIG:   server.thread_pool: 10
2012-07-15 21:40:34,571 turbogears.startup INFO Request decoding filter activated.
2012-07-15 21:40:34,590 turbomail.control INFO TurboMail extension starting up.
2012-07-15 21:40:34,593 turbomail.manager INFO Immediate manager starting up.
2012-07-15 21:40:34,593 turbomail.manager INFO Immediate manager ready.
2012-07-15 21:40:34,598 turbogears.visit INFO Visit Tracking starting (timeout = 7200 sec).
Successfully loaded "fehapo.model.Visit"
2012-07-15 21:40:34,633 turbogears.visit INFO Visit filter initialized
Identity starting
Successfully loaded "fehapo.model.User".
Successfully loaded "fehapo.model.Group".
Successfully loaded "fehapo.model.Permission".
Successfully loaded "fehapo.model.VisitIdentity".
Identity visit plugin initialized
Successfully loaded "fehapo.model.User".
Successfully loaded "fehapo.model.Group".
Successfully loaded "fehapo.model.Permission".
Successfully loaded "fehapo.model.VisitIdentity".
2012-07-15 21:40:34,840 cherrypy.msg INFO HTTP: Serving HTTP on http://0.0.0.0:8080/
Schau euch mal die letzte Zeile an:
http://0.0.0.0:8080/

Da sollte doch kein 0.0.0.0 stehen?

Ok, ich bin über jede Hilfe / Tips dankbar.

Einen schönen Sonntag wünscht,
Deister
BlackJack

@deister: Ob man den Port angeben muss oder nicht hat nichts mit dem Domainnamen zu tun. Du kannst die Seite auch über den Domainnamen aufrufen, allerdings nur wenn Du den Port mit angibst (und der Port nach aussen freigeschaltet ist, falls eine Firewall oder NAT involviert ist). Also wenn der Server unter `example.com` erreichbar ist, dann kannst Du die Seite auch über `http://example.com:8080/` aufrufen.

Wenn man den Port weg lässt, nehmen Browser normalerweise Port 80. Um den Webserver daran zu binden musst Du ihn a) entsprechend konfigurieren, b) die Rechte haben einen Server an einen Port <1024 zu binden, und c) darf da nicht schon ein Server laufen. Sollte auf dem Rechner schon ein „normaler” Webserver laufen, dann gibt es verschiedene Möglichkeiten eine Webanwendung dort einzubinden.

Ob 0.0.0.0 richtig ist, kommt darauf an ob Du mehr als eine IP für den Server hast. Die 0en sagen es soll an *alle* Interfaces gebunden werden, die der Rechner hat. Wenn er nur eine IP hat, dann ist es sicher nicht falsch, wenn er mehrere hat, kommt es darauf an ob Du den Server an eine bestimmte oder an alle binden möchtest.
deister
User
Beiträge: 8
Registriert: Samstag 7. Juli 2012, 19:33

Guten Morgen,

ich glaube ich hatte mich in meinem letzten Beitrag etwas falsch ausgedrückt.

Also die Domain ist auf dem Server eingerichtet und erreichbar.

Wenn ich die Domain aufrufe kommt nur die Standard index Seite des Adminsystems.

Leider ist darüber nicht das Python Script aufrufbar obwohl es im Account der Domain installiert wurde.

Also wenn ich http://www.domain.de aufrufe passiert nichts.
Wenn ich http://www.domain.de:8080 aufrufe erscheint die Seite.

Natürlich möchte ich das alles über http://www.domain.de aufrufbar ist.

Du schreibst:
Wenn man den Port weg lässt, nehmen Browser normalerweise Port 80. Um den Webserver daran zu binden musst Du ihn a) entsprechend konfigurieren
--> wie mache ich das?
b) die Rechte haben einen Server an einen Port <1024 zu binden
--> habe ich
c) darf da nicht schon ein Server laufen. Sollte auf dem Rechner schon ein „normaler” Webserver laufen, dann gibt es verschiedene Möglichkeiten eine Webanwendung dort einzubinden.
--> ja es läuft bereits ein anderer Webserver, wie kann ich mein Script dort mit einbinden

Ich danke für eure Hilfe / Tipps.

Nun wünsche ich noch einen guten Start in die neue Woche.
Gruß deister
BlackJack

@deister: Wie man Webanwendungen in einen vorhandenen Webserver einbindet hängt vom Webserver ab. Die Dokumentation zu TG hat ein paar Anleitungen für verschiedene Szenarios: Deploying TurboGears — Configuration

Ansonsten ist die CherryPy-Dokumentation die Anlaufstelle für mehr Informationen.
Antworten