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