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

_______________________________________________________
złota zasada - kto się nie zna, niech się nie wypowiada



Odpowiedź listem elektroniczym