超出主文件夹的.pyc文件?

3
如果我将我的项目放在/usr/bin/中,那么我的Python解释器会生成字节码吗?如果是的话,它把它们放在哪里,因为这些文件在该文件夹中没有写权限。它是否将它们缓存到临时文件中?
如果不是,我将项目放在那里是否会有性能损失?
我已将其打包为.deb文件,从我的Ubuntu PPA安装,因此安装项目的明显位置是/usr/bin/,但如果我不在那里生成字节码,我该怎么做?如果在另一个人的机器上安装,我能给项目写入权限吗?这似乎是一种安全风险。
肯定有很多Python项目安装在Ubuntu(和其他发行版)中,他们是如何处理的?
谢谢
2个回答

1
关于在 /usr/bin 中的脚本,如果您以没有写入 /usr/bin 的权限的用户身份运行脚本,则不会创建 .pyc 文件,并且据我所知也没有其他缓存机制。
这意味着每次解释器都会重新编译您的文件,因此可能会导致一定的性能损失。然而,也许这种损失并不明显。请注意,当源文件更新时,编译文件会自动更新,用户通常不会察觉到这一点。
在 Ubuntu 中普遍的做法是在 /usr/bin 中使用没有 .py 扩展名的小脚本。这些脚本被快速地进行字节编译,因此您无需担心性能问题。它们只是导入一个库并调用某种 library.main.Application().run() 方法,就这样而已。
请注意,该库安装在不同的路径中,并且所有库文件都针对不同的 Python 版本进行了字节编译。如果您的软件包不是这种情况,请检查您的setup.pydebian 文件,因为这不是应该的方式。

非常感谢。因此我认为答案应该是在我的机器上编译并将 .pyc 文件打包在 .deb 文件中分发。 - Caustic
@Caustic 不是的,你需要分发你的源文件,然后打包脚本会在每个可用的 Python 安装中安装时编译它们。请查看打包指南 - jcollado
扶额 当然。非常感谢!那样最有意义。 - Caustic

1

对于直接运行的脚本,不会生成.pyc/.pyo文件。放置在Python模块通常期望的位置并打包的Python模块在构建时间或安装时间生成.pyc/.pyo文件,因此不是最终用户的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接