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

Zbigniew Chyla cyba w gnome.pl
Wto, 10 Wrz 2002, 17:03:27 CEST


On Tue, 2002-09-10 at 14:20:44, Mateusz Korniak wrote:

> > Nie zauważyłem, żeby .pyo generowały inne wyniki niż .pyc dla tych
> > samych danych.  Jakiś przykład?
> 
> assert 1 == 0
> print "I co ? :) EOT"

W Pythonie 2.2 to jeszcze pół biedy, bo kod wygenerowany dla instrukcji
assert sprawdza, czy __debug__ != 0. Przy skompilowaniu modułu bez "-O"
jego użytkownik modułu uzyskuje więc z grubsza to, czego się spodziewa
(w zakresie assert): jeśli uruchomi Pythona z "-O" - będzie cichutko, jeśli
bez - wędzie wylatywał AssertionError.
Zmieniło się to jednak w wersji 2.3 - teraz wygenerowany kod nie sprawdza
już __debug__, więc reakcja modułu na assert zależy wyłącznie od tego, z jaką
opcją został skompilowany - jego użytkownik może sobie najwyżej podłubać
w nosie.

Nie wiem zresztą, o czym ta dyskusja. Muszą być dostarczane obie wersje
skompilowanych modułów (oczywiście teoretycznie można z jednej zrezygnować,
jeśli będzie .py, ale byłoby to niepoważne, bo każdy import pociągałby za
sobą kompilację), aby mogli z nich korzystać zarówno developerzy, jak i
użytkownicy korzystający z finalnych (super-przetestowanych) wersji
programów.
W przypadku dostarczenia jednej wersji binarki PLD byłoby bezużyteczne dla
developerów, albo nie oferowałoby najszybszego możliwego kodu.
Alternatywnie można jednak załatać pythona i dostarczać tylko *.pyc, a
*.pyo upchać do osobnych pakietów (coś jak *-dbg w Debianie), ale nie
byłoby to warte zachodu.


pozdrawiam
Cyba

-- 
 "Saying "not linking to gnome-libs makes it faster" is what most
 western cultures have defined as bullshit."

                   -- Federico Mena Quintero



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