You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将代码打包,让用户可运行main.py却无法查看源码

Python代码打包为可执行文件以隐藏源码的方案

要让用户能运行你的Python代码但无法直接查看源码,下面是几个实用的方案,都是Python生态里常用的工具:

1. 使用PyInstaller(最常用)

PyInstaller可以把Python脚本打包成独立的可执行文件(Windows下是.exe,Mac是.app,Linux是可执行程序),打包后源码会被转为字节码封装,普通用户很难直接查看。

  • 安装PyInstaller:
    pip install pyinstaller
    
  • 打包main.py:
    进入main.py所在目录,执行:
    pyinstaller --onefile main.py
    
    执行完成后会生成dist文件夹,里面的可执行文件就是用户能直接运行的程序,原.py文件无需发给用户。
  • 额外选项:如果程序依赖配置文件、资源文件等,可以用--add-data参数一并打包;若要做Windows GUI程序(隐藏命令行窗口),可添加--windowed参数。

注意:PyInstaller打包的文件存在被反编译出近似源码的可能,但对普通用户来说已经足够阻挡,若需要更强保护,可结合其他工具。

2. 使用Nuitka(编译为C代码,逆向难度更高)

Nuitka会把Python代码直接编译为C语言代码,再编译成可执行文件,相比PyInstaller,反编译难度大很多,同时生成的程序运行效率也更高。

  • 安装Nuitka:
    pip install nuitka
    
  • 打包main.py:
    执行命令:
    python -m nuitka --standalone --onefile main.py
    
    生成的可执行文件在当前目录(或指定输出目录),用户只需运行该文件即可,看不到原Python源码。
  • 优势:生成的程序无需依赖Python解释器,运行速度更快,逆向破解的门槛远高于PyInstaller。

3. 使用Cython编译为扩展模块

Cython可以把Python代码编译成C扩展(Windows下是.pyd,Linux/Mac是.so),这类二进制文件无法直接查看源码,你可以写一个简单的启动脚本调用编译后的模块。

  • 步骤:
    1. 安装Cython及对应编译工具(Windows需Visual Studio,Linux需gcc):
      pip install cython
      
    2. 将main.py重命名为main.pyx,创建setup.py文件:
      from setuptools import setup
      from Cython.Build import cythonize
      
      setup(
          ext_modules = cythonize("main.pyx", compiler_directives={'language_level': "3"})
      )
      
    3. 编译为扩展模块:
      python setup.py build_ext --inplace
      
    4. 编写启动脚本run.py:
      import main
      if __name__ == "__main__":
          main.main()  # 假设你的main.py以main()函数作为入口
      
    最后把run.py和编译出的.pyd/.so文件发给用户,用户运行run.py即可,核心逻辑在二进制模块中,无法直接查看。

重要提示

没有任何方法能做到100%阻止逆向工程,但上述方法足以应对绝大多数普通用户的源码查看需求。如果涉及高度敏感代码,可结合代码混淆、加密等手段,但会增加开发复杂度。

内容的提问来源于stack exchange,提问作者Ashish Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 13:21:14