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