Python rpm'y i pliki *.py *.pyc *.pyo

wrobell wrobell w ite.pl
Wto, 10 Wrz 2002, 11:39:14 CEST


On Tue, Sep 10, 2002 at 11:02:54AM +0200, Mateusz Korniak wrote:
> On Tuesday 10 September 2002 10:06, wrobell wrote:
> > On Mon, Sep 09, 2002 at 09:13:57PM +0200, Mateusz Korniak wrote:
> > > Jaka idea przyświeca fatktowi że w PLD'owskich rpm'ach  zawierających
> > > źródła w pythonie znajdują się równocześnie *.pyo i *.pyc , a brak
> > > odpowiedających im *.py  ?
> >
> > http://www.pld-linux.org/python.html
> >
> No więc informacje zawarte na tej stronie są IMHO w części nieprawdziwe.
> 
> 1. "optimized byte compiled modules cannot be imported without *.pyc"
> czysty interpreter Pythona importuje *.py lub *.pyc 
> z opcją -O (niby optymalizacji) importuje  *.py lub *.pyo
A rzeczywiście. Nigdy nie wpadłem na pomysł, żeby w ten sposób to zrobić...
Tylko trzeba to nieszczęsne -O zapodać. Czyli importuje albo .pyc (bez -O)
albo .pyo (z -O).

Przydałaby się łata na Pythona (jeśli jest wogóle możliwa), która:
1. Jest .pyc i .pyo, to importuje moduł w zależności od podania opcji -O
   (czyli tak jak jest teraz).
2. W przypadku braku .pyc i _podania_ -O oraz braku .pyo i nie podania -O,
   powinien zaimportować dostępną wersję. Obecnie wywala błąd, że moduł
   nie istnieje.

Wtedy możemy dystrybuować tylko *.pyo, ale pod warunkiem, że będziemy
je optymalizować tylko dla pierwszego stopnia optymalizacji (-O, a nie -OO
jak jest w większości spec-y).

> 2. "Secondly, *.pyo do not contain docstrings - source code documentation."
> To oczywista nieprawda. *.pyo mogą zawierać __doc__ stringi jak i ich nie 
> zawierać. 
-O Turn  on basic  optimizations. This changes  the filename
   extension for  compiled (bytecode) files from  .pyc to .pyo.
   Given twice, causes docstrings to be discarded.

W specach zazwyczaj jest -OO, więc u nas nie zawiera (ale tekst, rzeczywiście
jest niejednoznaczny).


> Podsumowywując, jeśli ideą jest "PLD daje najszybsze biblioteki wykonywalne" 
> to wystarczy dystrybuować *.pyo zawierające docstringi.
> 
> Jeśli ktoś chce sie bawić w developement na biblitekach do powinien dostawać 
> *.py i być może także *.pyc (ale zakładając że będzie developił to bez trudu 
> jak będzie potrzebował to sobie wygeneruje).
> 
> http://www.python.org/doc/1.5.1p1/tut/node43.html
Dla 2.2.1 (ale zdaje, się, że to to samo)

http://www.python.org/doc/2.2.1/tut/node8.html#SECTION008120000000000000000

    wrobell <wrobell w ite.pl>



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