python-devel-tools

wrobell wrobell w pld-linux.org
Nie, 2 Maj 2004, 12:59:09 CEST


On Sun, May 02, 2004 at 12:42:12PM +0200, Jakub Piotr C?apa wrote:
> wrobell wrote:
> >On Sat, May 01, 2004 at 10:37:22PM +0200, Jakub Piotr C?apa wrote:
> >
> >>wrobell wrote:
> >>
> >>>On Sat, May 01, 2004 at 09:06:57PM +0200, Jakub Piotr C?apa wrote:
> >>>>
> >>>>Stwierdzasz ze problemy z wersjami 
> >>>>openLDAPa powoduja balagan na FTP, wiec wywalamy openLDAPa z distro?
> >>>
> >>>co ma wiatrak do piernika?
> >>
> >>Chcesz zostawic wielu userow, nie wiedzacych dlaczego nie dziala, na 
> >>lodzie.
> >
> >gadasz bzdury. user dostanie komunikat, ze nie moze zostac znaleziony
> >odpowiedni modul.
> 
> Ale nie bedzie wiedzial dlaczego, bo tylko u nas tak to bedzie dzialac.
bedzie wiedzial - nie ma ustawionego PYTHONPATH, co jest udokumentowane
w przeciwnosci do tego pseudo-feature obecnego.

> >>>nie dziala
> >>
> >>Ma jakies powazne błędy poza brakiem #!/usr/bin/python na początku? Ja 
> >>staram się nie być czepialskim...
> >
> >uruchomiles ten skrypt? nie chodzi mi ani o brak "$!..."
> >ani o brak "import sys", po prostu nie dziala tak jakbys chcial.
> >jesli nazwiesz go timeit.py, to dostaniesz blad o braku funkcji main,
> >pomimo tego, ze modul timeit ma ta funkcje. zgadnij dlaczego?
> 
> Szedlbym o zaklad ze dzialalo... Musialem byc rozkojarzony.
> 
> #v+
> #!/usr/bin/python
> import sys
> 
> arch = sys.path[0]
> del sys.path[0]
> import timeit
> sys.path.insert (0, arch)
> del arch
> 
> if __name__ == "__main__":
>   sys.exit(timeit.main())
> #v-

dobrze, to teraz przeczytaj pierwszy list w tym watku, dobrze?

> Nijak nie umiem niestety zrobić tak, żeby to był pełnoprawny moduł i 
> import timeit w /usr/bin dawał to samo co wszędzie indziej - jeśli 
> importuje moduł o nazwie, ktora juz byla importowana, to dostaje modul z 
> cache (czyli w tym wypadku sam siebie). Taki bug lub feature, zalezy jak 
> na to patrzec. Musimy chyba traktowac moduly jako cos co musi miec 
> systemowo unikalne nazwy i tyle (tzn. w katalogach systemowych nie moga 
> wystepowac rozne moduly lub programy pythona o tych samych nazwach). 
> Inaczej zawsze cos sie bedzie walic.
i to jest wlasnie chore.

> >>>er? komunikat niewiele mówiący? dostanie informacje o tym, że nie może
> >>>znaleźć danego modułu. czego chcieć więcej?
> >>
> >>Dlaczego nie moze? U mojego kumpla dziala! Wszystkim naokolo dziala! W 
> >>Windowsach dziala! Co jest?
> >
> >bzdura. uzytkownik dostanie komunikat o braku modulu. man python,
> >ustawi sobie PYTHONPATH i po krzyku.
> >
> >a obecnie...  instalujesz ipython-a i nie dziala. dlaczego?
> >stworzylem skrypty o nazwie getpass.py, pdb.py lub mam
> >katalogi email, bsddb, encodings lub hotshot i skrypt nie dziala.
> >dlaczego? ach... proste rozwiaznie - trzeba kombinowac z sys.path
> >(jestem ciekaw gdzie mozna sobie o tym poczytac) :-\
> 
> Tez musialem to sam naprawic. Katalogi tak nie dzialaja - musza miec 
> __init__.py, zeby byly potraktowane jako moduly (choc cos mi tworzylo 

nie. to jest bardziej pochrzanione:

    $ mkdir timeit.py

    $ python -vv

    [snip]

    >>> import timeit.py
    # trying timeit.so
    # trying timeitmodule.so
    # trying timeit.py
    import timeit # from timeit.py
    # wrote timeit.pyc

    $ ls -l timeit*
    drwx------    2 wrobell  users        1024 May  2 13:00 timeit.py
    -rw-------    1 wrobell  users          89 May  2 13:00 timeit.pyc


> puste __init__.py, ale to byl chyba "feature" WebWare, nie samego 

> Pythona). Po prostu usuniecie "" z sys.path dla wszystkich skryptow w 
> systemie to nie jest dobre rozwiazanie tego problemu.
nie widze lepszego. moze tracisz pewna wygode, ale to udogodnienie
nie dziala, a takze wiele psuje w momencie gdy dochodzi do konfliktu
nazw

    wrobell <wrobell w pld-linux.org>



Więcej informacji o liście dyskusyjnej pld-devel-pl