如何加密PYTHON程序
今天系里的数学教授老史过来问我能不能帮他解决一个教学中遇到的问题。他有一个类似于Online Judge的Python程序,打算发给学生用于自测,但为了防止学生作弊,他又不想学生看到程序源代码。所以问题是如何加密Python源代码,同时又能让学生运行他的Python程序。
我Google了一下说有个网上的软件叫做Py2exe,可以把Python程序转化为Windows下的EXE文件。但是Py2exe似乎只能做Python 2和Python 3的低级版本,Python3.4以上的程序都不能转化。老史又跟我说Python在编译过程中可以生成pyc文件,就是一个对应于源代码的二进制代码,可以发这个pyc文件给学生执行。pyc文件很容易生成:
C:\> python
>>> import py_compile
>>> py_compile.compile('1.py')
我们拿到了这个pyc文件,却发现它不能双击执行,而只能在命令行下执行python 1.pyc才可以。这对使用来说很不方便。于是想到了Windows下的批处理文件,就在pyc文件的目录__pycache__里新建了一个runit.bat文件:
@echo off
python 1.pyc
双击runit.bat,果然执行成功了。
事情到这里似乎已经解决,但是果然没有其他办法双击执行pyc文件了吗?又在网上查了其它资料,有人说可以更改windows文件扩展名的关联,从而执行某一段命令。在cmd中运行这个命令
assoc | findstr /R /C:"pyc"
可以发现这一段信息:
.pyc=Python.CompiledFile
也就是说pyc文件被当成了CompiledFile对待,所以系统不会使用Python 1.pyc来运行这个文件。要更改这个设置,只要运行下面的命令:
Python.CompiledFile="C:\Python34\Python.exe" "%1" %*
就可以让pyc双击执行了。
转载自http://blog.sina.com.cn/s/blog_6f062c360102wqdq.html
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341