python-devel-tools

Jakub Piotr Cłapa loc w toya.net.pl
Nie, 2 Maj 2004, 13:22:19 CEST


wrobell wrote:
> 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.

Ale ten "pseudo-feature" jest powszechnie znany i uzywany. 
Udokumentowany PYTHONPATH zdecydowanie rzadziej (ja sam nigdy sie z nim 
nie spotkalem).

>>>>>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?

Jesli wszystkie skrypty z PATH beda tak u nas wygladac to nie beda sobie 
przeszkadzac. Najlepiej byloby po prostu symlinkowac do oryginalnych 
zrodel (wtedy w ogole nie bedzie problemu), ktore winny IMHO byc 
dolaczane do rpmow (poza .pyo i .pyc).
Mozna jeszcze pozmieniac nazwy (chocby tak jak zrobil to qboosh), to tez 
IMHO lepsze rozwiazanie niz Twoje.

Sugeruje glosowania CDG (w sprawie dolaczania zrodel .py i ew. w sprawie 
wywalenia "" z sys.path).

>>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.

Ale nie nam to poprawiac, a developerom Pythona. Nie mozemy psuc 
kompatybilnosci z calym swiatem i tyle.

>>>>>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

Ok, moj blad. Choc nadal wydaje mi sie, ze gdybys stworzyl tylko katalog 
"timeit" (bez .py), to nie byloby problemu.

Nie mowie, ze to jest dobre (bo ma wady; winno sie jakos bardziej 
zdecydowanie odrozniac rzeczy importowalne od smieci), ale wszedzie tak 
jest i poki Guido tego nie zmieni, to nic w tej materii nie powinnismy 
robic.

>>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

Konflikt nazw i tak bedzie grozny (patrz co napisalem o cacheowaniu). 
Rozwiazesz jedynie pol problemu. (druga polowa to juz zdecydowanie feature)

-- 
z wyrazami szacunku,
Jakub Piotr Cłapa



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