Si potrebbe anzi li omettere - o sono generati (se si ha accesso in scrittura), oppure il .py
viene analizzato ogni volta che lo si importa (che costa tempo).
Ma, a seconda della distribuzione, il sistema RPM potrebbe contenere semplici script per la compilazione .py
file e raggruppare i file .pyo
e .pyc
sulla distribuzione, il che rende il compito abbastanza facile.
$ rpm --showrc | grep -A 7 py.*_compile
-14: py3_compile(O)
find %1 -name '*.pyc' -exec rm -f {} ";"
python3 -c "import sys, os, compileall; br='%{buildroot}'; compileall.compile_dir(sys.argv[1], ddir=br and (sys.argv[1][len(os.path.abspath(br)):]+'/') or None)" %1
%{-O:
find %1 -name '*.pyo' -exec rm -f {} ";"
python3 -O -c "import sys, os, compileall; br='%{buildroot}'; compileall.compile_dir(sys.argv[1], ddir=br and (sys.argv[1][len(os.path.abspath(br)):]+'/') or None)" %1
}
-14: py3_incdir /usr/include/python3.3m
--
-14: py_compile(O)
find %1 -name '*.pyc' -exec rm -f {} \;
python -c "import sys, os, compileall; br='%{buildroot}'; compileall.compile_dir(sys.argv[1], ddir=br and (sys.argv[1][len(os.path.abspath(br)):]+'/') or None)" %1
%{-O:
find %1 -name '*.pyo' -exec rm -f {} \;
python -O -c "import sys, os, compileall; br='%{buildroot}'; compileall.compile_dir(sys.argv[1], ddir=br and (sys.argv[1][len(os.path.abspath(br)):]+'/') or None)" %1
}
-14: py_incdir %{py_prefix}/include/python%{py_ver}
I. e., È possibile inserire risp. %py_compile
. %py3_compile
nella sezione %build
e hai ciò di cui hai bisogno.
Ma, come detto, anche voi potete ometterli se volete usarli da diverse installazioni Python di vari numeri di versione. Ma allora dovresti assicurarti che i file .pyc
e .pyo
non vengano mai creati, in quanto ciò potrebbe rovinare le cose.
Whoa, bello. C'è un modo per sovrascrivere il 'python' usato, però? Come ho scritto nella mia domanda, è all'interno di un 'virtenv'. Nota a margine: il motivo principale per ometterli è la dimensione risultante del pacchetto. – 0xC0000022L
È possibile sovrascriverlo sostituendo le macro menzionate nel file '.rpmrc' o' .rpmmacros'. – glglgl
usando l'opzione '--define', perché l'intero passo di costruzione è scriptato e alcuni dei parametri vengono calcolati. – 0xC0000022L