压缩 Python 代码,但不要改变换行方式,有这样的工具吗?

2024-09-24 10:47:17 +08:00
 garywill

我需要一个能够最小化 python 代码文件,但不改变我的换行方式的代码压缩器。(为了便于报错时查错,所以行号不想改变)

具体点的说话,希望工具能够:

  1. 删除所有注释,以及末尾空格
  2. 替换所有开头的空格缩进为 tab
  3. 最小化所有函数内的变量名,但不要改变任何全局对象名
10373 次点击
所在节点    Python
21 条回复
mightybruce
2024-09-24 10:53:51 +08:00
https://python-minifier.com/
看看这个是否满足
q8515620
2024-09-24 10:56:42 +08:00
不改变行号这个可能现有的工具都不支持吧?
br_wang
2024-09-24 12:59:09 +08:00
python 生态有类似 sourcemap 的工具么?
SilenceRet
2024-09-24 13:08:17 +08:00
py 这种逆天的以缩进控制结构的东西 还能压缩吗 =_=!
zepc007
2024-09-24 13:53:46 +08:00
python 代码又不是 2C 的,此举意义何在?
drymonfidelia
2024-09-24 13:59:00 +08:00
不改变行号的话 winrar 可以做到 就是压缩完的不能被 cpython 直接执行
@q8515620
treblex
2024-09-24 15:33:58 +08:00
二进制可以用 upx ,可以压掉 3/4
tomczhen
2024-09-24 17:58:25 +08:00
zipimport
crackidz
2024-09-24 20:19:57 +08:00
你这样,要不直接提供 pyc 吧
louis16s
2024-09-24 20:33:58 +08:00
有这个必要吗
sazima
2024-09-24 21:17:19 +08:00
把项目代码压缩成 zip , 写一个启动器解压代码并执行。
sazima
2024-09-24 21:19:19 +08:00
研究一下, 不把文件实际解压到磁盘上,只把代码读到内存中也是可以的
ClericPy
2024-09-24 21:57:08 +08:00
https://github.com/ClericPy/morebuiltins/blob/master/morebuiltins/utils.py#L411

以前做过类似的 code_inline ,保留行号应该也留个差不多,毕竟只是压缩了一下。

报错查错自己写个 format error 也可以找到是哪行哪句报哪个错

https://github.com/ClericPy/morebuiltins/blob/master/morebuiltins/utils.py#L782
guiyumin
2024-09-25 00:24:37 +08:00
既然都用到编译器了
那不如编译的时候把缩紧改为大括号,然后把这个编译后的代码运行在一个支持大括号的 python 解释器上,完美

至于这个支持大括号的 python 解释器,我觉得可以考虑给 cpython 写个插件之类的
Reficul
2024-09-25 01:46:36 +08:00
Python 支持从 zip 压缩包里执行代码,可以看下:
1. https://peps.python.org/pep-0273/
2. https://peps.python.org/pep-0441/
Reficul
2024-09-25 01:47:57 +08:00
另外提一嘴,一般文本文件压缩率在 10x 左右,不管是 gzip 还是 zip 都差不多。
mayli
2024-09-25 03:56:28 +08:00
zipimport + pyc?
lekai63
2024-09-25 09:10:04 +08:00
不如 pyc 交付?
qiuhang
2024-09-25 10:46:36 +08:00
编译成二进制交付?比如用 nuitka
ylei
2024-09-25 11:07:49 +08:00
代码 -》 AST -》 代码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1075318

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX