繁体   English   中英

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

[英]May I omit .pyo and .pyc files in an RPM?

我将一个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文件,因为这可能会使事情搞砸。

只要您拥有他们的.py文件,它就是安全的。 由于.pyo.pyc文件是从原始.py文件生成的。

另请参见python文件扩展名.pyc .pyd .pyo代表什么? 如果解释了Python,什么是.pyc文件?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM