Sie in der Tat sie weglassen könnte - sie entweder erzeugt werden (wenn Sie Schreibzugriff haben) oder die .py
jedes Mal, wenn Sie es importieren analysiert wird (die Zeit kostet).
Aber je nach Distribution, könnte Ihr RPM-System einfache Skripte enthält .py
Dateien zum Kompilieren und bündelt die .pyo
und .pyc
Dateien auf Verteilung, die die Aufgabe ganz einfach macht.
$ 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., Können Sie %py_compile
bzw. setzen. %py3_compile
in Ihrem %build
Abschnitt und Sie haben, was Sie brauchen.
Aber wie gesagt, Sie können sie auch weglassen, wenn Sie sie von mehreren Python-Installationen verschiedener Versionsnummern verwenden möchten. Aber dann sollten Sie sicherstellen, dass die .pyc
und .pyo
Dateien nie erstellt werden, da dies Dinge vermasseln könnte.
Whoa, nett. Gibt es eine Möglichkeit, den verwendeten "Python" außer Kraft zu setzen? Wie ich in meiner Frage geschrieben habe, ist es in einem "Vierenv". Randnotiz: Der Hauptgrund, sie wegzulassen, ist die resultierende Größe des Pakets. – 0xC0000022L
Sie können es überschreiben, indem Sie die genannten Makros in Ihrer Datei '.rpmrc' oder' .rpmmacros' ersetzen. – glglgl
Verwenden Sie den Schalter '--define' selbst, da der gesamte Build-Schritt Skript ist und einige der Definitionen berechnet werden. – 0xC0000022L