gpt4 book ai didi

python - 我可以在 RPM 中省略 .pyo 和 .pyc 文件吗?

转载 作者:太空狗 更新时间:2023-10-29 21:07:28 35 4
gpt4 key购买 nike

我将一个 Python 应用程序及其 virtenv 环境捆绑在一个 RPM 中以便于部署。省略所有 .pyo.pyc 文件是否是一个明智的决定?

我要做的是在 virtenv 实例中的安装后操作中调用 compileall.py。这行得通吗,还是会把事情搞砸?

注意:我知道我可以在一台机器上尝试,但是 a.) 这不会给我一个关于这是否适用于其他机器的决定性答案 b.) 其他人可能有同样的问题而我没有'找到答案。

最佳答案

您确实可以省略它们 - 它们要么是生成的(如果您有写入权限),要么是 .py 在您每次导入时都被解析(这会花费时间)。

但是,根据您的发行版,您的 RPM 系统可能包含用于编译 .py 文件并捆绑 .pyo.pyc 的简单脚本> 分发文件,这使任务变得非常简单。

$ 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}

我。即,您可以分别放置 %py_compile%py3_compile 到你的 %build 部分,你就有了你需要的东西。

但是,如前所述,如果您想从多个不同版本号的 Python 安装中使用它们,您也可以省略它们。但是你应该确保永远不会创建 .pyc.pyo 文件,因为这可能会把事情搞砸。

关于python - 我可以在 RPM 中省略 .pyo 和 .pyc 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18312106/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com