如果我将项目放在/ usr / bin /
中我的python解释器会生成字节码吗?如果是这样,它将它们放在哪里,因为文件在该文件夹中没有写入权限。它是否将它们缓存在临时文件中?
如果没有,那么将项目放在那里会不会有性能损失?
我已将其打包为从我的Ubuntu ppa安装的.deb文件,因此安装项目的显而易见的地方是/ usr / bin /
但如果我不通过将字节代码放在那里来生成字节代码我该怎么办?如果它安装在另一台人机器上,我可以给项目写入权限吗?这似乎是一种安全隐患。
肯定有很多python项目安装在Ubuntu(显然是其他发行版)中,他们如何处理这个问题?
由于
答案 0 :(得分:1)
关于/usr/bin
中的脚本,如果您以无法写入/usr/bin
的权限的用户身份执行脚本,则不会创建.pyc
个文件,据我所知,没有任何其他缓存机制。
这意味着您的文件每次都由解释器进行字节编译,因此,是的,会有性能损失。然而,可能这种损失并不明显。请注意,更新源文件时,编译的文件会自动更新,而无需用户注意(至少在大多数情况下)。
我所看到的是Ubuntu中的常见做法是在/usr/bin
中使用小脚本,甚至没有.py
扩展名。这些脚本的字节编译速度非常快,因此您无需担心。他们只是导入一个库并调用某种library.main.Application().run()
方法,而这就是全部。
请注意,库安装在不同的路径中,并且所有库文件都是针对不同的python版本进行字节编译的。如果您的软件包不是这种情况,那么您必须审核setup.py
和debian
个文件,因为这不是应该的样式。
答案 1 :(得分:1)
.pyc / .pyo文件。放置Python模块通常需要和打包的Python模块在构建时或安装时生成.pyc / .pyo文件,因此不是最终用户的问题。