我编写了一个python代码,它接受一个输入数据文件,对数据执行一些处理并将另一个数据文件写为输出。
我现在应该分发我的代码,但是用户不应该看到源代码,而是能够只提供输入并获得输出! 我以前从未这样做过。
如果能以最简单的方式实现这一目标,我将不胜感激。
提前多多感谢
答案 0 :(得分:3)
因为Python是一种设计的解释语言;并且因为它将代码编译为字节码( - 这无助于你试图隐藏它的事实,因为字节码更容易反转 - )没有真正安全的方法来隐藏你的源代码,因为它是不可恢复的,如对于任何编程语言都是如此,真的。
最初,如果你想使用一种不容易逆转的语言 - 你应该选择一种更直接编译到底层架构的机器代码的本机语言,这种机器代码很难再现。由于整齐的编译器优化,CISC等人给出的开销,原始语言更不用说了。
但是,可以使用一些将源代码转换为可执行格式的库(通过打包Python解释器和字节码),例如:
或者你可能会考虑替代它,这是代码混淆,它仍然允许用户阅读源代码但是几乎无法读取。
然而,提出这个问题的一个问题是,添加代码会更难,因为错误的代码混淆技术会使代码变得静态。此外,在后一种情况下,代码可能会有冗余代码带来的开销,意味着欺骗或诱骗用户认为代码正在做一些事情,而不是。
一般来说,它否定了开源的标准做法,这是Python喜欢做和支持的。
所以要真正得出结论,如果你不想阅读上面的所有内容;你做错的第一件事是为此选择Python,这是一种支持开源的语言,也是开源的。因此,为了缓解这个问题,您应该重新考虑该语言,或者按照上面的引用链接到可能有助于隐藏基本源代码隐藏的模块。
答案 1 :(得分:1)
首先,由于Python是一种解释型语言,我认为你不能完全保护你的Python代码,可以不编译.pyc文件来获取.py文件(例如使用uncompyle6)。
所以你唯一能做的就是让它很难阅读。
我建议您查看代码混淆,其中包括通过更改变量/函数名称,删除注释和文档字符串,删除无用空格等来使代码无法读取。Pyminifier做那种事。 您也可以编写自己的混淆脚本。
然后,您还可以将程序转换为单个可执行文件(例如,使用pyinstaller)。我很确定有一种方法可以从可执行文件中获取.py文件,但这只会让它变得更难。在制作可执行文件时,请注意跨平台兼容性。
答案 2 :(得分:0)
当然,另一个选择是通过Web公开功能,以便用户可以通过浏览器进行交互,而无需访问实际代码。
答案 3 :(得分:0)
通过以上回答,我的理解是,如果您的客户端希望与其他不受保护的脚本一起执行受保护的脚本,则上述某些策略可能无法正常工作。
另一个选择是加密脚本,然后使用可以解密并执行该脚本的解释器。它也有一些限制。
ipepycrypter 是可帮助保护python脚本的套件。这可以通过隐藏脚本实现来实现。加密的脚本由修改后的python解释器执行。 ipepycrypter 由加密工具 ipepycrypt 和python解释器 ipepython 组成。