继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

如何加密PYTHON程序

安卓软件程序开发入门学习
关注TA
已关注
手记 289
粉丝 49
获赞 282

今天系里的数学教授老史过来问我能不能帮他解决一个教学中遇到的问题。他有一个类似于Online Judge的Python程序,打算发给学生用于自测,但为了防止学生作弊,他又不想学生看到程序源代码。所以问题是如何加密Python源代码,同时又能让学生运行他的Python程序。


我Google了一下说有个网上的软件叫做Py2exe,可以把Python程序转化为Windows下的EXE文件。但是Py2exe似乎只能做Python 2和Python 3的低级版本,Python3.4以上的程序都不能转化。老史又跟我说Python在编译过程中可以生成pyc文件,就是一个对应于源代码的二进制代码,可以发这个pyc文件给学生执行。pyc文件很容易生成:

123C:\> python>>> import py_compile>>> py_compile.compile('1.py')


我们拿到了这个pyc文件,却发现它不能双击执行,而只能在命令行下执行python 1.pyc才可以。这对使用来说很不方便。于是想到了Windows下的批处理文件,就在pyc文件的目录__pycache__里新建了一个runit.bat文件:

12@echo offpython 1.pyc

双击runit.bat,果然执行成功了。


事情到这里似乎已经解决,但是果然没有其他办法双击执行pyc文件了吗?又在网上查了其它资料,有人说可以更改windows文件扩展名的关联,从而执行某一段命令。在cmd中运行这个命令

1assoc | findstr /R /C:"pyc"

可以发现这一段信息:

1.pyc=Python.CompiledFile

也就是说pyc文件被当成了CompiledFile对待,所以系统不会使用Python 1.pyc来运行这个文件。要更改这个设置,只要运行下面的命令:

1Python.CompiledFile="C:\Python34\Python.exe" "%1" %*

就可以让pyc双击执行了。


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP