V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
bigtear
V2EX  ›  Python

除了 Cython 和 Pyarmor, Python 还能如何保护源代码

  •  
  •   bigtear · May 14, 2025 · 3688 views
    This topic created in 358 days ago, the information mentioned may be changed or developed.
    因为要把程序发布到许多用户可以访问的 Docker 容器中,一些项目可以用 cython 编译成 so ,效果还可以,但是有些用到了 pydantic 、json 转换之类的库的项目用 cython 加密会导致程序运行出错,比如有的类型转换校验会出错。不改动原程序的话,这样的项目不能用 cython 了。好像还有一个 pyarmor 也能加密项目,但是它的授权方案不适合项目场景,请问各位还有其他方案吗?
    16 replies    2026-02-24 10:18:30 +08:00
    bigtear
        1
    bigtear  
    OP
       May 14, 2025 via Android
    话说没试过 nuitka ,之前用 nuitka 编译带 torch 的项目时间太长了,感觉小项目的话可以试试
    foolishcrab
        2
    foolishcrab  
       May 14, 2025 via iPhone
    你是要发一个 public image 但是其中的 python 程序不想被看到源码?
    理论上没有完全不能逆向的办法,或者需要重新考虑下分发模式
    Riyue
        3
    Riyue  
       May 14, 2025   ❤️ 2
    https://skywind.me/blog/archives/3002
    貌似是在 V2EX 看到并收藏的文章,文章后半部分讲了 python 加密
    vicalloy
        4
    vicalloy  
       May 14, 2025
    为什么第三方库也要编译,不管还是 cython 还是 nuitka 都可以只编译自己的代码。
    user1284
        5
    user1284  
       May 14, 2025
    用...ai 改成 rust 重写
    iorilu
        6
    iorilu  
       May 14, 2025
    docker 发布还想保护源码, 不太可能

    如果你真有啥牛逼算法, 建议搞成服务器得服务

    否则就算了, 不一定有人关心你的源码, 这年头随便啥功能, 让 ai 写一个能有多难
    312ybj
        7
    312ybj  
       May 14, 2025   ❤️ 1
    nuitka 够你用了,你之前试的时间长,那是因为是第一次打包, 要把所有的都打成 C , 后续打包分钟级别就能完成了。 至于授权方案, 可以自己校验 sn 就行了,很容易扩展的
    Ritter
        8
    Ritter  
       May 14, 2025
    @Riyue 看完才发现是韦易笑的 经常在知乎看到这个大佬
    weijar
        9
    weijar  
       May 14, 2025
    自己写个程序把变量名混淆了。
    十年前我我写 python 程序卖时就自己整过一个 https://pyob.oxyry.com/
    这个小工具开发花了一星期,当然我早就不用 python 所以那个也早已废弃不更新了。
    jettzhang
        10
    jettzhang  
       May 14, 2025
    nuitka 就完事了
    bronyakaka
        11
    bronyakaka  
       May 14, 2025
    混淆+Cython ,又快又简单
    bronyakaka
        12
    bronyakaka  
       May 14, 2025
    @bronyakaka 没注意标题,忽略
    maocat
        13
    maocat  
       May 15, 2025
    巧了, 这两天正在搞 python 代码加密这块
    先说代码混淆
    现在代码混淆意义不大, 扔给 AI 给就能翻译出来, 而且开源的基本都是单文件混淆, 没有工程级别的

    Pyarmor 因为是商业软件, 不太好使用
    最终方案是使用的 Pyarmor 原理加解密.py 文件, 然后 py 文件转为 pyc(目前我试了下 python3.12+ 开源 pyc 反编译的结果不太行)
    加密秘钥和解密代码用 nuitka 做成.so
    bigtear
        14
    bigtear  
    OP
       May 16, 2025
    @maocat 大佬可否细说,用它的原理,先混淆源代码然后转为 pyc ,加解密的话用单独的 so 库?有没有代码可以参考😂
    rahj
        15
    rahj  
       May 21, 2025
    用的不靠谱
    bigtear
        16
    bigtear  
    OP
       Feb 24
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3832 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 05:06 · PVG 13:06 · LAX 22:06 · JFK 01:06
    ♥ Do have faith in what you're doing.