[Python-de] Hat jemand Python unter Solaris zum Laufen gebracht?

Dr.Dr.Ruediger M.Flaig flaig at hablas.com
Mit Apr 7 23:46:46 CEST 2004


Hallo allerseits,

nachdem ich Python auf drei verschiedenen Versionen von Linux und auf MacOS-X ohne irgendwelche Probleme zum Laufen bringen konnte, dachte ich, daß es auch mit Solaris funktionieren müsse... aber dem war nicht so! Kann mir da irgendwer weiterhelfen?

Aaalso, ich habe mir GCC Version 3.3.2 und Python 2.3.3 (TGZ) beschafft, das Python-Archiv ausgepackt (da gab's das erste Problem, weil nach dem Gunzippen die Solaris-Version von TAR irgendwas von Prüfsummenfehler faselte, aber das ließ sich schließlich umgehen) und mit "./configure" begonnen. Ergebnis: FEHLER -- das Installationsskript wußte nicht, auf was für einem Rechner es lief. Mit "--host=sparc64-solaris" ließ sich auch das beheben... bis schließlich das Skript mit der jämmerlichen Feststellung ausstieg, es sei unfähig, zu identifizieren, ob das System "big endian" sei. Ich weiß, daß es das ist, aber ich habe keine Ahnung, wie ich dem blöden Skript das verständlich machen soll.

Falls jemand eine Lösung weiß, werde ich sehr dankbar sein. Zum Hintergrund: Der Rechner ist eine Ultra-5 mit 1x UltraSparc II (333 MHz), 128 MB Speicher und 9 GB Freßplatte, System ist Solaris-9 (frisch installiert).

Viele Grüße,
   Rüdiger Marcus



Dr. Dr. Ruediger Marcus Flaig
Institute for Immunology
University of Heidelberg
Im Neuenheimer Feld 305
D-69120 Heidelberg
<flaig at cirith-ungol.sanctacaris.net>
Tel. +49-172-7652946 
  | +49-6221-56-5402 
  | +49-6221-432963



--- python-de-request at python.net wrote:
Um Emails an die Liste python-de zu schicken, schicken Sie diese an
die Adresse
	python-de at python.net

Um sich via Web von der Liste zu entfernen oder draufzusetzen:
	http://python.net/mailman/listinfo/python-de
oder, via Email, schicken Sie eine Email mit dem Wort 'help' in
Subject/Betreff oder im Text an
	python-de-request at python.net

Sie koennen den Listenverwalter dieser Lister unter der Adresse
	python-de-owner at python.net
erreichen

Wenn Sie antworten, bitte editieren Sie die Subject/Betreff auf einen
sinnvollen Inhalt der spezifischer ist als "Re: Contents of python-de
digest..."


Meldungen des Tages:

   1. Re: Python & USB (Marco Bartel)
   2. Re: Dateien ueber Sockets uebertragen (Hartmut Goebel)
   3. Re: Re: Dateien ueber Sockets uebertragen (Holger Duerer)
   4. Re: Dateien ueber Sockets uebertragen (Holger Duerer)
   5. Re: Dateien ueber Sockets uebertragen (Alexander 'boesi' Bösecke )
   6. Re: Dateien ueber Sockets uebertragen (Alexander 'boesi' Bösecke )


----------------------------------------------------------------------

Message: 1
Date: Tue, 06 Apr 2004 14:41:20 +0200
From: Marco Bartel <Marco.Bartel at iee.lu>
Subject: Re: [Python-de] Python & USB
To: Arnd Zapletal <a_zapletal at web.de>
Cc: python-de at python.net
Message-ID: <4072A570.1060501 at iee.lu>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Arnd Zapletal wrote:

>On Mon, 05 Apr 2004 13:19:45 +0200
>Marco Bartel wrote:
>
>[...]
>  
>
>>is a library called libusb for c , wich deals with the 
>>usb-kernel-modules, but unfortunatly i didn't found a wrapper around 
>>this library, wich allows me to do the same from within python. I just 
>>was thinking about to do the wrapper myself using SWIG
>>    
>>
>[...]
>
>
>did you think about 'pyrex' for bridging to the c-library?
>
>it's quite fast, pretty cool and much less pain (compared to swig, IMHO)
>
>cu
>Arnd  
>
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>python-de maillist  -  python-de at python.net
>http://python.net/mailman/listinfo/python-de
>  
>
Hallo Arnd,
hab gerade erst gerafft, dass ich hier in Englisch geposted habe :-)
Naja kann mal passieren. Hab allerdings von pyrex noch nicht gehört. Mit 
SWIG hab ich schon einige Dinge gewrapped, und auf der comp.lang.python 
hab ich auch schon nen link auf nen SWIG-wrapper rund um libusb 
gefunden, der prima funktioniert.  Zumal mein C Programm, welches ich 
nach python portieren will, auch libusb nutzt,  ist der wrapper eine 
runde sache, und relativ schmerzfrei :-)

Falls jemand daran interressiert ist: 
http://cvs.sf.net/viewcvs.py/bitpim/bitpim/native/usb/

THX
Marco





------------------------------

Message: 2
Date: Mon, 05 Apr 2004 20:51:33 +0200
From: Hartmut Goebel <h.goebel at crazy-compilers.com>
Subject: Re: [Python-de] Dateien ueber Sockets uebertragen
To: Alexander 'boesi' Bösecke <boesi.josi at gmx.net>
Cc: Python-de <python-de at python.net>
Message-ID: <4071AAB5.2040800 at crazy-compilers.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Alexander 'boesi' Bösecke schrieb:

>>* Was ist das maximale Beispiel, bei dem der Fehler nicht auftritt?
> 
> Remote trat der Fehler immer auf. Lokal gar nicht. Bzw ich weiss nicht,
> was du mit maximales Beispiel meinst.

Ein "maximales Beispiel, bei dem der Fehler auftritt" ist das Beispiel, 
das gerade so komplex ist, dass der Fehler noch nicht auftritt. Die Idee 
dahinter ist, den Fehler von "oben" und "unten" einzugrenzen: Man 
iteriert sich quasi an den Fehler heran. Klar?

>>* Welche Zeile(n) unterscheiden das Beispiel, bei dem der Fehler
>>   auftritt, von einem Beispiel, bei dem der Fehler nicht mehr auftritt?
> 
> Ein time.sleep(0.2) nach dem ersten send brachte Abhilfe, das war aber
> natuerlich keine Loesung

Damit hast Du vielleicht einen word-around gefunden, aber das Problem 
nicht gelöst. Oder konntest Du danahc sagen: "Aha, daran war es gelegen"?

(Ich überlege mich eben, ob ich eine Vorlesung: Fehlersuche in 
Programmen anbieten soll ;-)


> Allerdings scheint mir (c)Pickle wirklich nicht das geeignete Mittel um
> einfache Datentypen wie Integer, Listen und Tupel zu uebertragen. Oder
> spricht irgendwas gegen die Verwendungen von repr/eval?

Ja: eval ist typischerweise ein Zeichen von schlechtem Code, da es sich 
in den meisten Fällen vermeiden läßt. Für den Lösungsweg, den Du unten 
gegangen bist, wäre es aber okay -- ich würde nur gleich einen anderen 
Lösungsweg gehen ;-)

Allerdings machst Du unten -- nach meinem Geschmack -- viel zu viel per 
Hand. Ich würde dann noch eher eine Mischung aus Deinem vorherigen 
Ansatz machen: Daten Pickeln und deren Länge vornewegschicken. Was Du 
dazu brauchst, hast Du unten schon stehen, kannst aber 80% wieder 
rausnehmen, weil das Pickle für dich übernimmt.

> Ich habs jetzt folgender Klasse geloest:

Hmmmm, zum Lernen okay, für produktiven Einsatz hat es einen Haken: Es 
löst ein Problem, für das es schon andere Lösungen gibt.

>         if FIL == 1:
>             typ = 'FIL'
>         else:
>             if   type(data) == int:   typ = 'INT'
>             elif type(data) == long:  typ = 'LNG'
>             elif type(data) == str:   typ = 'STR'
>             elif type(data) == list:  typ = 'LST'
>             elif type(data) == tuple: typ = 'TPL'
>             else: typ = 'OTH'
>             data = repr(data)
>         if FIL == 0: data = repr(data)

Das kannst Du auch Pickle machen lassen, denn Pickle arbeitet auch nicht 
anders.

>         while length == 0:
               ...
>         while typ == '':
               ...

Wenn Du Header und Daten mit einem anderen Zeichen trenntst, als die 
Header-Felder untereinander, dann brauchst Du nur eine Schleife:

      while not '\n' in self.getData:
         ...

(kann man noch optimieren).

-- 
Regards
Hartmut Goebel

| Hartmut Goebel               | We build the crazy compilers |
| h.goebel at crazy-compilers.com | Compiler Manufacturer        |





------------------------------

Message: 3
Date: Tue, 06 Apr 2004 20:43:13 +0100
From: Holger Duerer <python-lists at duerer-sinclair.de>
Subject: Re: [Python-de] Re: Dateien ueber Sockets uebertragen
To: Alexander 'boesi' Bösecke <boesi.josi at gmx.net>
Cc: Python-de <python-de at python.net>
Message-ID: <873c7gx57y.fsf at Ronaldann.demon.co.uk>
Content-Type: text/plain; charset=iso-8859-1

>>>>> "Alexander" == Alexander 'boesi' Bösecke <boesi.josi at gmx.net> writes:

    >> Wg. des 0.2 sek. wartens: Da gibt es eine Option, den
    >> Nagle-Algorithmus auszuschalten, damit sollte dieses
    >> Zeitinterval kuerzer werden.

    Alexander> Das ist dann aber die Methode mit'm Vorschlaghammer,
    Alexander> oder?

Für das, was er machen wollte, schon. Das Abschalten des
Nagle-Algorithmus kann jedoch sehr sinnvoll sein.  Wenn Du ein
Protokoll hast, bei dem beide Seiten schnell, wechselseitig eineinader
kurze Packete schicken, bringt das einen merklichen Durchsatzgewinn.

      Holger




------------------------------

Message: 4
Date: Tue, 06 Apr 2004 20:48:32 +0100
From: Holger Duerer <python-lists at duerer-sinclair.de>
Subject: Re: [Python-de] Dateien ueber Sockets uebertragen
To: Alexander 'boesi' Bösecke <boesi.josi at gmx.net>
Cc: Python-de <python-de at python.net>
Message-ID: <87y8p8vqen.fsf at Ronaldann.demon.co.uk>
Content-Type: text/plain; charset=iso-8859-1

>>>>> "Alexander" == Alexander 'boesi' Bösecke <boesi.josi at gmx.net> writes:
  [...]
    Alexander>         sendData = '%d-%s-%s' % (len(data), typ, data)
    Alexander>         try: self.send(sendData)
    Alexander>         except: return 1
  [...]

Hmmm.  Rein aus dem Gedächnis heraus, würde ich sagen, daß man besser
self.sendall(sendData) sagen sollte.  Falls sendData zu gross wird,
wird Dir send() nicht alles schicken.

Ausschnitt aus "pydoc socket":
,----
| sendall(data[, flags]) -- send all data
| send(data[, flags]) -- send data, may not send all of it
`----


        Holger



------------------------------

Message: 5
Date: Wed, 07 Apr 2004 11:21:06 +0200
From: "Alexander 'boesi' Bösecke " <boesi.josi at gmx.net>
Subject: Re: [Python-de] Dateien ueber Sockets uebertragen
To: Python-de <python-de at python.net>
Message-ID: <c50o73.4pc.1 at boesi.MyFQDN.de>
Content-Type: text/plain; charset="ISO-8859-1"

Hi

Am 06.04.2004 21:48:32 schrieb Holger Duerer:

> Hmmm.  Rein aus dem Gedächnis heraus, würde ich sagen, daß man besser
> self.sendall(sendData) sagen sollte.  Falls sendData zu gross wird,
> wird Dir send() nicht alles schicken.

Hab mir mal die Doku dazu angesehen.
send und sendall unterscheiden sich lediglich in der Fehlerbehandlung.
send gibt die Zahl der gesendeten Bytes zurueck, im Normalfall ist das
halt len(sendData). sendall dagegen loest eine exception aus, wenn nicht
alle Bytes gesendet werden konnten, es ist aber nicht moeglich zu
erfahren wieviele Bytes gesendet worden.
Es ist also Blödsinn send in try-except zu kapseln, und da ich ich im
Moment noch keine Fehlerbehandlung einbauen will, kann/sollte ich
sendall verwenden, damit ich Fehler ueberhaupt mitbekomm.
 
cu boesi
-- 
So stellt sich der Atheist doch die                  #1671 : icq-intern
Unsterblichkeit vor - Lokalverbot                #73628288 : icq-extern
auf dem Friedhof.                                boesi111 : aim
                                                      i171 : reallife



------------------------------

Message: 6
Date: Wed, 07 Apr 2004 11:44:54 +0200
From: "Alexander 'boesi' Bösecke " <boesi.josi at gmx.net>
Subject: Re: [Python-de] Dateien ueber Sockets uebertragen
To: Python-de <python-de at python.net>
Message-ID: <c50pjn.4l0.1 at boesi.MyFQDN.de>
Content-Type: text/plain; charset="ISO-8859-1"

Hi

Am 05.04.2004 20:51:33 schrieb Hartmut Goebel:

> > Ein time.sleep(0.2) nach dem ersten send brachte Abhilfe, das war aber
> > natuerlich keine Loesung
> 
> Damit hast Du vielleicht einen word-around gefunden, aber das Problem 
> nicht gelöst. Oder konntest Du danahc sagen: "Aha, daran war es gelegen"?

Deswegen ja auch "das war aber natuerlich keine Loesung"
Und ausserdem ... hat sich eine gewisse Anwendung namens Word inzwischen
als Synonym fuer work-around verbreitet? *g*
 
> Ja: eval ist typischerweise ein Zeichen von schlechtem Code, da es sich 
> in den meisten Fällen vermeiden läßt.

Naja vermeiden kann man verdammt viel. Aber ist eval von der Performance
her denn so schlecht? Oder was sind konkrete Nachteile von eval? (also
nicht nur auf mein aktuelles Problem bezogen)

> Für den Lösungsweg, den Du unten gegangen bist, wäre es aber okay --
> ich würde nur gleich einen anderen Lösungsweg gehen ;-)
 
Dazu faellt mir jetzt Perl ein - There's more than one way to do it. *g*

> Allerdings machst Du unten -- nach meinem Geschmack -- viel zu viel per 
> Hand. Ich würde dann noch eher eine Mischung aus Deinem vorherigen 
> Ansatz machen: Daten Pickeln und deren Länge vornewegschicken.

Ok, hab deine Anmerkungen in die beiden Methoden eingearbeitet, die
sehen jetzt so aus:

    def sendData(self, data, File=0):
        if File == 1:
            typ = 'F'
        else:
            data = cPickle.dumps(data)
            typ = 'P'
        self.sendall('%d-%s.%s' % (len(data), typ, data))

Den Typ F verwende ich fuer Daten, die Teil von Dateien sind, irgendwie
find ichs albern die zu picklen. 

    def recvData(self):
        while 1:                                            # Header der Nachricht
            index = self.getData.find('.')
            if index != -1:
                length, typ = self.getData[:index].split('-', 1)
                length = int(length)
                self.getData = self.getData[index+1:]
                break
            self.getData += self.recv(self.BufSize)
        while 1:                                            # Daten der Nachricht
            if length <= len(self.getData):
                data = self.getData[:length]
                if length < len(self.getData):
                    self.getData = self.getData[length:]
                else:
                    self.getData = ''
                break
            self.getData += self.recv(self.BufSize)
        if typ == 'P': data = cPickle.loads(data)           # Konvertierung der Daten
        return data

> (kann man noch optimieren).

Wenn du weitere Vorschlaege hast...

thx & cu boesi
-- 
A Achkatz'l ofm Baam                                 #1671 : icq-intern
des hot a schins Laam                            #73628288 : icq-extern
braucht keen Pfenng Gald                          boesi111 : aim
un freit sich of dr Walt                              i171 : reallife



------------------------------

_______________________________________________
python-de maillist  -  python-de at python.net
http://python.net/mailman/listinfo/python-de


Ende python-de Nachrichtensammlung, Band 12, Eintrag 5
******************************************************

_____________________________________________________________
Free eMail .... the way it should be....
http://www.hablas.com